Der Unterschied in Begriff der Speicher ist, dass die Ausdrücke des Formulars: String s = "test"
die "interned" Zeichenfolge verwendet, um eindeutige Instanzen zu teilen.
Der Aufruf der Form: String s = "test"
effizient ist im Vergleich zu String s = new String("test")
Der ersten Aufruf Nutzung des vorhandenen konstanten Ausdrucks macht (falls vorhanden), der zweite Anruf Verwendung eine neue Instanz erstellt, ohne dass jede vorhandene Instanz
Below Code Chunk zeigt dies:
String test = new String("test");
String internTest = "test";
String nonInternTest = new String("test");
System.out.println(test == internTest); // prints false
System.out.println(test != nonInternTest); // prints true
System.out.println(test.equals(nonInternTest)); // prints true
Beachten Sie auch, dass die JLS das Verhalten legt somit sein:
Jeder Stringliteral ist ein Verweis auf eine Instanz der Klasse String (§4.3.3). String-Objekte haben einen konstanten Wert. String-Literale - oder allgemeiner gesagt, Strings, die die Werte von konstanten Ausdrücken sind, werden "interniert", um eindeutige Instanzen mit der Methode String.intern zu teilen.
http://stackoverflow.com/questions/390703/what-is-the-purpose-of-the-expression-new-string-in-java –