2010-09-20 61 views
1

我一直想知道在Java中創建String的最有效方法是什麼。由此我的意思是不會改變價值的字符串。關於池的Java String最佳實踐

例子:

String prefix = "Hi, I am "; 

prefix不會改變,但後綴的威力。

  • 我不想讓prefix一個static final變量,因爲它會永遠留在活着的JVM即使類是很少使用...喇嘛喇嘛。

  • ,當我做到以下幾點:

    String fullWord = ("Hi, I am "+_postFix);

    我猜測的"Hi, I am"字符串值將保持在java字符串處理池,我沒有宣佈前綴的「開銷」作爲一個變量。

含義,我的問題歸結爲:

  1. 將java字符串處理池始終使用時,當我不使用new關鍵字來聲明一個String變量?

  2. 在使用它之前將String聲明爲變量是否更好?

  3. 字符串池如何工作? JVM是否檢測到經常使用相同的字符串值並在JVM內存中始終引用該字符串?

+1

關於你的第一句話:字符串永遠不會改變它們的值,它們是不可改變的。對他們的引用可能會改變,就是這樣。 – 2010-09-20 12:52:05

回答

10
  1. 所有文字String s的實習。
  2. 編寫易於理解的代碼。真的不值得嘗試納米優化這個。
  3. 所有字面值String由類加載器加載實現,StringString.intern返回(在典型實現中這是一種很慢的方式)。
+3

我同意#2,但是知道東西爲什麼有效的原因是有價值的,而不僅僅是如何去做。 – 2010-09-20 13:10:03