字符串對象是不可變的。
String str = "ObjectOne"+"ObjectTwo";
is same as
String str = "ObjectOneObjectTwo";
通過不可變,我們的意思是存儲在String對象中的值不能被改變。接下來的問題就是「如果String是不可變的,那麼我怎麼能夠隨時改變對象的內容?」。那麼,確切地說,它不是反映你所做的更改的相同的String對象。在內部創建一個新的String對象來執行更改。
因此,假設你聲明一個String對象:
String myString = "Hello";
接下來,您要追加「來賓」,以相同的字符串。你是做什麼?
myString = myString + " Guest";
當您打印myString的內容時,輸出將爲「Hello Guest」。儘管我們使用了相同的對象(myString),但在內部創建了一個新對象。所以mystring會引用「Hello Guest」。對hello的引用會丟失。
String s1 = "hello"; //case 1
String s2 = "hello"; //case 2
在情況1中,文字s1是新創建並保存在池中。但在情況2中,文字s2引用s1,它不會創建新的。
if(s1 == s2)System.out.println(「equal」); //輸出等於
String s= "abc"; //initaly s refers to abc
String s2 =s; //s2 also refers to abc
s=s.concat("def"); // s refers to abcdef. s no longer refers to abc.

有類似的問題在這裏:http://stackoverflow.com/questions/15669067/fastest-way-of-converting-integer-to-string-in-java – msi