正如我們所知,String
是不可變的,這意味着每次都會創建一個新實例。java中的字符串對象
我的問題是,如果我寫的:
System.out.println("Java"+"is"+"programming");
那麼多少個對象在池中創建?
正如我們所知,String
是不可變的,這意味着每次都會創建一個新實例。java中的字符串對象
我的問題是,如果我寫的:
System.out.println("Java"+"is"+"programming");
那麼多少個對象在池中創建?
你的例子將創建一個單一的字符串對象。這是注意到throughoutJavadocumentation。
我的理解是,Java只在最初創建時纔將新字符串添加到字符串池中。所以,
String str1 = "hello";
將在池中的單個字符串。
所以會
String str2 = "Java" + "is" + "cool";
該對象是在字符串池中還是在字符串池的外部創建的, –
你的榜樣將創建「單」字符串僅是
String x = "Javaisprogramming";
因爲「+」在Java中的字符串連接運算符(它在內部調用的append()),所以當你打電話System.out.println("Java"+"is"+"programming");
然後編譯器從串聯中創建一個字符串對象,並用println()
方法發送它。
所有關於「+」運算看到此answer
當該代碼被編譯,它被轉換成一個字符串對象。試着反編譯這段代碼來看看這個。 – MJSG
'這意味着每次都創建一個新實例'這不是真的 –