String s1=new String("abcd");
s2=s1.intern();
Es wird gesagt, dass intern()
wird ein String-Literal im Pool erstellen, wenn es nicht bereits vorhanden ist.Erstellt intern() jemals ein Literal im Pool?
Meine Frage ist wann wird dieses Szenario entstehen, dass String-Objekt vorhanden ist, aber nicht das Literal? Und der Praktikant() muss tatsächlich gehen und ein neues Literal erstellen und dann den Verweis auf das Literal zurückgeben.
Wir wollen nicht jede * Zeichenfolge in den String-Pool einfügen. Das Speichern von Strings im Pool ist nur sinnvoll, wenn Sie diese Zeichenfolge später wiederverwenden möchten, z. B. für Zeichenfolgenliterale, die Sie in Code erstellt haben, wo Sie sie oft benötigen, wie 'for (i ..) {System.out.print ("Schreib deine Nummer:"); array [i] = readNumber();} '. Aber wenn Sie etwas Text von einer externen Quelle wie Datei/Konsole/Socket/andere wie zeilenweise lesen, wollen Sie JVM nicht wirklich daran erinnern, alle Zeilen zu speichern. Sie möchten diese möglicherweise nur einmal drucken und GC aus dem Speicher löschen lassen. – Pshemo