Java的String是不可變的嗎?
在 Java 中,String
類型是不可變的,也就是說,一旦創(chuàng)建了一個 String
對象,它的值就不能被修改。例如:
String str = "hello";
str = str + " world"; // 創(chuàng)建了一個新的字符串對象
在上面的示例中,第二行代碼實(shí)際上創(chuàng)建了一個新的字符串對象,而不是修改了原始的
str
對象。然而,有一些方法可以修改字符串的值,例如:
concat(String str)
:將指定的字符串連接到該字符串的末尾。
substring(int beginIndex, int endIndex)
:返回一個新的字符串,它是該字符串的一個子字符串。
replace(char oldChar, char newChar)
:返回一個新的字符串,它是將該字符串中所有出現(xiàn)的oldChar
替換為newChar
后得到的字符串。這些方法并不會直接修改原始的字符串對象,而是返回一個新的字符串對象。
此外,還有一些比較隱晦的方式可以修改字符串對象的值,例如使用反射機(jī)制來修改字符串對象的私有字段,或者使用
sun.misc.Unsafe
類等不安全的操作。因此,雖然
String
類型本身是不可變的,但是在某些情況下,字符串的值可能會被修改,因此在編寫 Java 代碼時,仍需要注意字符串的不可變性。
標(biāo)簽:Java