不可变String

在c++中,一个引用传递会改变实参的值。然而在java中,却是和c++不同的。

1 public static void main(String[] args) {  
2     String x = new String("ab");  
3     change(x);  
4     System.out.println(x);  
5 }  
6    
7 public static void change(String x) {  
8     x = "cd";  
9 }  

这个java代码的输出值是“ab”而不是“cd”。

String对象是不可变的。String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,已包含修改后的字符串内容。而最初的String对象则丝

毫未动。

事实上,实际传递的是引用的一个拷贝,就像图中所示的一样,ab引用所指的对象其实一直呆在单一的物理位置上,从未动过。

原文地址:https://www.cnblogs.com/zyb993963526/p/6067243.html