String 一旦賦值就不能重新賦值,因為重新賦值會再開辟一個空間存放新的值。string? 是fall修飾
String對象不可修改指的是對象本身不可修改,而不是引用不可修改。
String a = "你好";
這行代碼的意思是聲明一個String類型的引用變量叫做a,在內(nèi)存中創(chuàng)建一個String對象(值為"你好"),然后把這個對象的引用賦值給變量a。
a = "hello";
這行代碼執(zhí)行的效果是在內(nèi)存中另外創(chuàng)建了一個String對象(值為"hello"),然后把這個新對象的引用賦值給變量a,而不是把原來的內(nèi)存中的那個“你好”的String對象值變?yōu)椤癶ello”。如果之后內(nèi)存中那個“你好”的String對象沒有任何引用,那么就會被下一次垃圾回收器運行時回收。
String和所有的基本類型包裝類的對象都是不變量。內(nèi)存中的不變量對象的值是不能被改變的。