值传递
值传递指的是在方法调用时,传递的参数是按值的备份进行传递的,也就是说在传递后就互不相关了。
----------------------------------------------
值传递举例:
public class Demo {
public static void main(String[] args) {
int x = 10;
test(x);
System.out.println("在main()方法中,x = " + x);
}
public static void test(int x) {
System.out.println("在test()方法内部修饰值以前:x = " + x);
x = x * 2;
System.out.println("在test()方法内部修改值以后:x = " + x);
}
}
运行结果:
在test()方法内部修饰值以前:x = 10
在test()方法内部修改值以后:x = 20
在main()方法中,x = 10
引用传递
引用传递是指传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。
----------------------------------------------
引用传递举例:
public class Demo {
public static void main(String[] args) {
A a = new A();
System.out.println("在main()方法的内部调用test()方法前:a.age = " + a.age);
test(a);
System.out.println("在main()方法的内部调用test()方法后:a.age = " + a.age);
}
private static void test(A a) {
a.age = 20;
System.out.println("在main()方法的内部:a.age = " + a.age);
}
}
class A {
public int age = 0;
}
运行结果:
在main()方法的内部调用test()方法前:a.age = 0
在main()方法的内部:a.age = 20
在main()方法的内部调用test()方法后:a.age = 20