Moin Jeena,
Mit Java habe ich keinerlei Erfahrung, würde mich aber schwerstens wundern, wenn der == Operator tatsächlich false ergäbe.
Wenn hier nicht die ausnahme der String-literals gewesen wäre dann hätte er durchaus false zurückgegeben.
Um das mal aufzuklären: der ==-Operator ist der Identitäts-Operator. Er prüft, ob Variable a auf dasselbe Objekt wie Variable b zeigt. Strings verweisen auf das gleiche Objekt, wenn sie als Literale angegeben wurden (das ist eine Optimierung der JVM) oder wenn man ein Konstrukt der Art
String a = new String();
String b = a;
if(a == b) {
System.out.println("Yay! Identisch!");
}
benutzt. Beachte: Strings in Java sind immutable. Ändert man einen String, so wird ein neues String-Objekt erzeugt:
String a = "abc";
String b = a;
b = b + "hulla";
if(a != b) {
System.out.println("Meh, nicht identisch");
}
Es mögen vielleicht zwei unterschiedliche String-Objekte sein
Und genau das prüft der == Operator eigentlich. Für das was in JavaScript == macht gibt es in Java die String.isEqual(String)-Methode die man stattdessen unbedingt nutzen sollte.
s/isEqual/equals/
s/sollte/muss/
In Java ist equals() die Methode der Wahl, um auf Gleichheit zu prüfen. Zusätzlich implementieren einige Klassen (alle Basis-Datentypen z. B.) das Comparable-Interface, dass einen Stringvergleich (String a kommt bei alphabetischer Sortierung nach String b) erlaubt.
LG,
CK