值传递:
指的是在方法调用时,传递的参数是按值的拷贝传递,传递后就互不相关了。
public class test2 {
private void test1(int a){
//做点事情
a=0;
System.out.println(a);
}
public static void main(String[] args) {
test2 t = new test2();
int a = 3;
t.test1(a);//这里传递的参数a就是按值传递
System.out.println(a);
}}
输出:
0
3
可见,a传递过去后,不会影响前面的值。
引用传递:
指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。
public class test2 {
private void test1(A a){
//a = new A(); 如果这里实例化一个新的A覆盖掉a,就不会相互影响
a.age = 20;
System.out.println("test1方法中的age="+a.age);
}
public static void main(String[] args) {
test2 t = new test2();
A a = new A();
a.age = 10;
t.test1(a);
System.out.println("main方法中的age="+a.age);
}
}
class A{
public int age = 0;
}
test1方法中的age=20
main方法中的age=20