2017-09-19 43 views
2

我一直在深入討論Java中的String類。 Java中的字符串由字符數組支持。Java String「」.value

創建具有初始值的字符串,我們調用構造函數爲:

 /* String creation */ 
     String s = new String("example"); 

在String類的構造函數的代碼是:

 public String(String original) { 
      this.value = original.value; 
     } 

能有人請解釋我的邏輯「original.value」。從源代碼中,我知道它返回字符數組。但是,java如何生成它?

+1

「我們將構造函數稱爲:」否「String s =」example「;'就足夠了。 –

+0

在String類中'value'是[private](https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)。您無法訪問它。 –

+0

['String.value'](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/lang/String.java#114)是'private '。看重複以瞭解這意味着什麼。 –

回答

5

"foo"語法已經構建了String情況下,它的語法糖,這樣你就不必寫:

String foo = new String(new char[]{'f', 'o', 'o'}); 

因此,通過調用new String("foo")你已經構建了串一次的時候,並正在創建第一個字符串的副本 - 而不是「創建具有初始值的字符串」。

Effective Java:第5項更詳細地討論了這一點,並且不鼓勵使用new String(String)構造函數。

+0

謝謝@ dimo414。現在理解了這個概念:) – Prashanth

相關問題