2017-09-19 4 views
2

Ich habe die String-Klasse in Java in der Tiefe durchlaufen. Zeichenfolge in Java wird durch Zeichenarray unterstützt.Java String "" .Wert

Strings zu erstellen, die Anfangswerte haben, rufen wir den Konstruktor als:

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

Der Code Konstruktor in der String-Klasse ist:

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

Kann jemand erklären Sie mir bitte die Logik "Originalwert". Aus dem Quellcode verstehe ich, dass es ein Zeichenarray zurückgibt. Aber wie Java es erzeugt?

+1

"Wir nennen den Konstruktor wie folgt:" Nein. 'String s =" Beispiel ";' ist ausreichend. –

+0

"Wert" ist [privat] (https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) in der String-Klasse. Sie können nicht darauf zugreifen. –

+0

['String.value'] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/lang/String.java#114) ist' privat '. Sehen Sie sich das Duplikat an, um zu verstehen, was das bedeutet. –

Antwort

5

Die "foo" Syntax, um eine String Instanz bereits aufgebaut hat, es ist syntaktischer Zucker, so dass Sie müssen nicht schreiben: Sie

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

So rufen Sie durch die Zeit new String("foo") Sie haben einmal eine Zeichenfolge bereits gebaut, und erstellen jetzt eine Kopie der ersten Zeichenfolge - nicht "creat [ing] Zeichenfolgen, die Anfangswerte haben".

Wirksames Java: Punkt 5 bespricht dies ausführlicher und rät davon ab, jemals den new String(String) Konstruktor zu verwenden.

+0

Danke @ dimo414. Verstanden das Konzept jetzt :) – Prashanth