值传递 在方法调用时,实参通过把他的内容副本传入方法内部,/形参接收到的实际时是实参的一个副本,因此正在方法内部对实参的任何操作,仅仅是对该副本的操作,不会影响原始实参的值
引用传递 在方法调用时,把实参真正的值的地址传递给形参,方法内部形参和实参指向同一块内存地址,对方法内部实参的操作会影响原始实参的值
结论:java中方法的参数都是值传递
class Person {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
@Override
public String toString() {
return "Person{name='" + name + "'}";
}
}
public class Test {
public static void main(String[] args) {
int age = 10;
System.out.println("方法调用前参数: " + age);
setAge(age);
System.out.println("方法调用后参数: " + age);
// 引用参数类型
Person p1 = new Person();
System.out.println("方法调用前参数: " + p1);
setName(p1);
System.out.println("方法调用后参数: " + p1);
}
public static void setAge(int age) {
age = 20;
}
public static void setName(Person person) {
if (person != null) {
person.setName("Alice");
}
}
}