Wann sollten wir die interne Methode von String für Stringliterale verwenden?

Laut String#intern(), intern Methode soll den String aus dem String-pool, wenn die Zeichenfolge gefunden, die in der String-pool, andernfalls wird ein neues string-Objekt Hinzugefügt werden in der String-pool und die Referenz dieser String wird zurückgegeben.

Also versuchte ich Folgendes:

String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();

if ( s1 == s2 ){
    System.out.println("s1 and s2 are same");  //1.
}

if ( s1 == s3 ){
    System.out.println("s1 and s3 are same" );  //2.
}

Erwartete ich, dass s1 and s3 are same wird so gedruckt, als s3 interniert ist, und s1 and s2 are same wird nicht gedruckt. Aber das Ergebnis ist: beide Linien werden gedruckt. Das heißt also, standardmäßig String-Konstanten werden interniert. Aber wenn es so ist, dann warum brauchen wir die intern Methode? In anderen Worten, wenn sollten wir diese Methode benutzen?

Kommentar zu dem Problem - Öffnen
Die Javadoc-Sie verknüpft auch die Staaten "Alle Zeichenketten und string-Werten Konstante Ausdrücke sind interniert." Kommentarautor: Jorn
nicht ein exaktes Duplikat.. Kommentarautor: Bozho
@Jörn: das ist richtig. Also warum haben wir die intern als öffentliche Methode. Sollten wir nicht mit intern als private Methode, so, dass niemand Zugriff darauf haben. Oder ist es Zweck dieser Methode? Kommentarautor: Rakesh Juyal
@RakeshJuyal: Die intern-Methode definiert ist, die auf einem string-Typ werden können string-Literale oder Variablen. Wie würden Sie intern eine variable, wenn war die Methode private? Kommentarautor: bobbyalex

InformationsquelleAutor der Frage Rakesh Juyal | 2009-12-06

Schreibe einen Kommentar