引用传递(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将底层的字符串数组赋值给value。Array的赋值只是引用的赋值,所以上述new操作并不会产生新的字符串字面值。但是new操作新创建了一个String对象,并将其赋值给了c。String的不可变性还在于,String的所有操作都会产生新的字符串字面量。原来的字符
本文探讨了Java中引用类型String的值传递和引用传递的区别。值传递涉及基本类型,拷贝的是值,不修改原始变量;引用传递在传递String时,虽然拷贝的是引用地址,但由于String的不可变性,对副本的修改不会影响原始对象,确保了线程安全性。
订阅专栏 解锁全文
723

被折叠的 条评论
为什么被折叠?



