字符串对象是不可变的。
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