2014-03-06 91 views
-2

我得到以下條件?從字符串池中分配字符串是否有效?

String A="a"; 
String B="b"; 
String c="a"+"b"; 

我的問題是是串c新創建的或者是從字符串池中分配值「a」和「b」和總多少字符串是根據上述問題而形成?

+2

-1:已經有很多關於字符串池的答案,我不知道如何問這個,除非你還沒有在SO上搜索過。 – Julien

+0

這裏是一個可能的重複:[字符串池行爲](http://stackoverflow.com/questions/14490043/string-pool-behavior) – Joel

+0

我知道它的他們,甚至我讀了幾次,但有點困惑,而去通過一篇文章 –

回答

3

是c新創建。 Java中的字符串實際上是immutable(即一旦創建,它們永不改變)。其中一個後果就是,無論何時你進行一個改變字符串的操作,你都會得到一個新的,不同的對象。

所以在你的例子中,創建了3個字符串。

0

取這兩個String對象:

String a = "a"; 
String b = "b"; 
String c = "a" + "b"; 
String d = "ab"; 

編譯器創建和池3個String對象。逐行解釋如下。

  • 1行:一個String對象被合併用於"a"
  • 第2行:一個String對象被合併用於"b"
  • 線路3:"a" + "b"是計算機在編譯時和作爲處理過的一個文字。因此,一個String對象集中爲"ab"
  • 線路4:"ab"已經在游泳池

遵循相同的準則,你的榜樣產生3個String對象。

相關問題