我得到以下條件?從字符串池中分配字符串是否有效?
String A="a";
String B="b";
String c="a"+"b";
我的問題是是串c新創建的或者是從字符串池中分配值「a」和「b」和總多少字符串是根據上述問題而形成?
我得到以下條件?從字符串池中分配字符串是否有效?
String A="a";
String B="b";
String c="a"+"b";
我的問題是是串c新創建的或者是從字符串池中分配值「a」和「b」和總多少字符串是根據上述問題而形成?
是c新創建。 Java中的字符串實際上是immutable(即一旦創建,它們永不改變)。其中一個後果就是,無論何時你進行一個改變字符串的操作,你都會得到一個新的,不同的對象。
所以在你的例子中,創建了3個字符串。
取這兩個String
對象:
String a = "a";
String b = "b";
String c = "a" + "b";
String d = "ab";
編譯器創建和池3個String
對象。逐行解釋如下。
String
對象被合併用於"a"
String
對象被合併用於"b"
"a" + "b"
是計算機在編譯時和作爲處理過的一個文字。因此,一個String
對象集中爲"ab"
"ab"
已經在游泳池遵循相同的準則,你的榜樣產生3個String對象。
-1:已經有很多關於字符串池的答案,我不知道如何問這個,除非你還沒有在SO上搜索過。 – Julien
這裏是一個可能的重複:[字符串池行爲](http://stackoverflow.com/questions/14490043/string-pool-behavior) – Joel
我知道它的他們,甚至我讀了幾次,但有點困惑,而去通過一篇文章 –