String s = "abc";
String s1 ="a"+"b"+"c";
看有關書籍介紹說這上面兩句代碼內存中創建了4個對象,但是也有些資料上說是只創建了一個對象,因為編譯器會把字符串常量在編譯過程中直接相加?
還有就是 String a = "abc";
String c = a+"d";
String d = a+"d";
這個時候創建了幾個對象呢?為什麼c和d不相等呢
String s = "abc";
String s1 ="a"+"b"+"c";
這裡只有兩個對象s和s1,因為這裡的字符串都是字面常量。
String a = "abc";
String c = a+"d";
String d = a+"d";
這裡是3個對象,a,c,d, c與d不相等,是因為他們都不是字面常量,是經過相加而來,相加而來的字符串,都是copy到新內存塊裡,所以c與d不相等。
這一塊可以參考《深入理解Java虛擬機》