值传递与引用传递
值传递
例1:
public static void main(String[] args) {
int x = 10 ;
method(x);
System.out.println("x = " + x);
}
private static void method(int mx) {
mx = 20 ;
}
输出结果:
x = 10
为什么x的值是10而不是20呢?
x只是复制了一个值给mx,mx = 20 只是mx改变,x的值一直都是10.
引用传递
public class Text01 {
public static void main(String[] args) {
Duck d = new Duck();
method(d);
System.out.println("Duck age = " + d.age);
}
private static void method(Duck duck) {
duck.age = 5;
}
}
class Duck {
int age = 2;
}
运行结果:
Duck age = 5
运行原理:
0x0011是地址,地址指向堆内存