总结
- 1.方法形参 调用方法时,将实参变量值复制一份,传递给形参变量,实参引用类型的时候,是将引用类型的地址值传递给形参变量,指向堆内存中的地址,通过该地址可以修改堆内存中对象的属性值,所以java中是值传递,没有引用传递。
- 2.局部变量的作用域,局部变量的作用域在方法体内,局部变量压栈,弹栈就销毁了。
- 3.return 返回值 将方法作用域的值返回给调用方。
示例代码结构
源码
ReferenceTest.java
package com.sedaier.reference;
/**
*
* @ClassName: ReferenceTest
* @Description: java中形参和实参
* @author: zxj
* @date: 2020年9月1日 下午5:18:13
*
*/
public class ReferenceTest {
/**
*1.方法形参 调用方法时,将实参变量值复制一份,传递给形参变量,实参引用类型的时候,
* 是将引用类型的地址值传递给形参变量,指向堆内存中的地址,通过该地址可以修改堆内存中对象的属性值,
* 所以java中是值传递,没有引用传递。
*2.局部变量的作用域,局部变量的作用域在方法体内,局部变量压栈,弹栈就销毁了。
*3.return 返回值 将方法作用域的值返回给调用方。
*/
public static void main(String[] args) {
/**
* 场景1: 基本类型 int
*/
int i = 0;
StudentInfoService.setInt(i);
System.out.println(i);
/**
* 场景2:字符串 String
*/
String str = "天天向上...";
StudentInfoService.setStr(str);
System.out.println(str);
/**
* 场景3-1:引用类型 Student
*/
Student stu1 = new Student();
stu1.setName("惠山1");
System.out.println("====方法外对象"+stu1.hashCode()+"======");
StudentInfoService.setName(stu1);
System.out.println(stu1);
System.out.println("====方法外对象"+stu1.hashCode()+"======");
/**
* 场景3-2:引用类型 Student
*/
Student stu2 = new Student();
stu2.setName("惠山2");
System.out.println("====方法外对象"+stu2.hashCode()+"======");
StudentInfoService.setStudent(stu2);
System.out.println(stu2);
System.out.println("====方法外对象"+stu2.hashCode()+"======");
}
}
Student.java
package com.sedaier.reference;
public class Student {
String name;
String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
StudentInfoService.java
package com.sedaier.reference;
public class StudentInfoService {
public static void setName(Student stu) {
stu.setName("张三");
System.out.println("====方法内对象"+stu.hashCode()+"======");
}
public static void setInt(int i) {
i = 1;
}
public static void setStr(String str) {
str = "好好学习!";
}
public static void setStudent(Student stu) {
stu = new Student();
stu.setName("王五");
System.out.println("====方法内对象"+stu.hashCode()+"======");
}
}