我覺得如果別人問這個問題的話,回答不可變就可以了。 下面只是給大家看兩個有代表性的例子:
1) String不可變但不代表引用不可以變
String str = "Hello";
str = str + " World";
System.out.println("str=" + str);
結果:str=Hello World
解析:
實際上,原來String的內容是不變的,只是str由原來指向"Hello"的內存地址轉為指向"Hello World"的內存地址而已,也就是說多開闢了一塊內存區域給"Hello World"字符串。
2) 通過反射是可以修改所謂的“不可變”對象
結果:
s = Hello World
s = Hello_World
解析:
用反射可以訪問私有成員, 然後反射出String對象中的value屬性, 進而改變通過獲得的value引用改變數組的結構。但是一般我們不會這麼做,這裡只是簡單提一下有這個東西。
閱讀更多 會點代碼的鬍子大叔 的文章