引用传递(pass by reference)是指在调用方法时将实际参数的地址直接传递到方法中,在方法中对参数所进行的修改,将影响到实际参数。
值传递(pass by value)是指在调用方法时将实际参数拷贝一份传递到方法中,在方法中对参数修改,不会影响到实际参数。
基本类型传的是值的拷贝,对拷贝变量的修改不影响原变量,当传的是引用类型时,传的是引用地址的拷贝,但是拷贝的地址和真实地址指向的都是同一个真实数据,可以修改原变量中的值,当传的是String类型时,虽然拷贝的也是引用地址,指向的是同一个数据,但是String的值不能被修改。
String c= new String("abc");
在java heap中创建了“abc”,然后调用String的构造函数
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
在构造函数中,String将底层的字符串