Ich bin mir dessen bewusst, wenn SieWie verwendet die JVM interne String-Teilstrings?
for (condition) {
String s = "hi there";
}
Nur eine String
Instanz machen, ist in allen Iterationen erstellt, im Gegensatz zu String s = new String("hi there");
die eine neue Instanz in jeder Iteration wird erstellen.
Aber lesen Effective Java von Joshua Bloch: Kapitel 2 Punkt 5 (Seite 20) heißt es:
Darüber hinaus wird sichergestellt, dass das Objekt von jedem anderen Code ausgeführt wird in den gleichen wiederverwendet werden virtuelle Maschine, die mit passiert enthält die gleiche Zeichenfolge Literal [JLS, 3.10.5].
AFAIK, der nicht sagen zu zufällig die gleiche Stringliteral, heißt es enthält.
Lesen [JLS, 3.10.5] kann keine genaue Referenz dazu finden und ich habe Zweifel.
Giving diese Schnipsel:
String s1 = "hi ";
String s2 = "there";
String s3 = "hi there";
Wie viele Instanzen erstellt werden?
- 3 Instanzen (Phrase ist nicht wirklich genau).
- 2 Instanzen,
s1
unds2
(danns3
erstellts1
unds2
Referenzen Wiederverwendung)
Er bedeutet wahrscheinlich "die virtuelle Maschine enthält ..", nicht die Zeichenfolge enthält eine andere Zeichenfolge –
Ich bin mir nicht sicher, so ein Kommentar anstelle einer Antwort. Aber ich denke, dass das "contain" teilweise falsch ist und dein Beispiel tatsächlich drei Instanzen ergibt. – glglgl
@glglgl ist eigentlich was * meine Logik * sagt, aber kann JVM schlau genug sein, 's3' als Referenz zu' s1' + 's2' zu erstellen? –