我想了解Java字符串是如何不可變的。我認爲這應該是一個簡單的概念,但在閱讀了幾個在線網頁後,我仍然不太明白。Java字符串如何工作
我不明白Java字符串是如何「不可變的」。目前,我有以下代碼:
public static void main(String[] args) {
String name = "Jacob Perkins";
System.out.println(name);
name = name + "!";
System.out.println(name);
}
我的輸出如下:
Jacob Perkins
Jacob Perkins!
爲什麼一個字符串應該是這種情況的發生是不可變的?爲什麼我能夠爲字符串重新賦值?
'String' * variables *不是不可變的(因爲它們是不同的!)您已經創建了一個新的字符串並將其引用賦給了變量'name'。 – dlev 2013-05-08 04:11:12
我還是不明白。爲什麼我會用Java字符串看到「不可變的」一詞? – user2301187 2013-05-08 04:13:04
@ user2301187:兩個變量可以指向同一個字符串對象。如果字符串是可變的,則可以通過其他變量的引用來看到一個變量對字符串的更改。因爲它們不是,所以每個變量都知道它指向的字符串不能在「它看起來不會改變」的時候改變。這是因爲可變字符串會令人感到恐懼並且增加了很多複雜性,例如你必須記得每當你想要一個不會改變的副本的時候就創建一個字符串的副本,或者以後會發生奇怪的事情,這也可能是不安全的事情! – Patashu 2013-05-08 04:15:36