Ich habe eine Frage zu einem seltsamen Verhalten des String-Pools. Ich verwende ==, um gleiche Zeichenfolgen zu vergleichen, um herauszufinden, ob sie im Pool sind oder nicht.
public class StringPoolTest {
public static void main(String[] args) {
new StringPoolTest().run();
}
String giveLiteralString() {
return "555";
}
void run() {
String s1 = giveLiteralString() + "";
System.out.println("555" == "555" + "");
System.out.println(giveLiteralString() == giveLiteralString() + "");
}
}
Die Ausgabe ist:
true
false
Das ist eine große Überraschung für mich. Könnte jemand dies bitte erklären? Ich denke, etwas darüber findet zur Kompilierungszeit statt. Aber warum macht das Hinzufügen ""zu einem String überhaupt einen Unterschied?