Wie würde sich das Programm ändern, wenn die zweite Anweisung folgendermaßen geändert werden würde:
String str2 = "StringLiteral" ; // kleiner Unterschied
Jetzt, da das zweite Literal nicht mit dem Ersten identisch ist,
werden zwei literale Stringobjekte erzeugt, und
die Variablen str1
und str2
verweisen auf verschiedene
Objekte.
==
sind, sind immer equal()
Der ==
-Operator überprüft, ob zwei Variablennamen auf dasselbe Objekt verweisen.
Es ist in der realen Welt (und in Programmen) üblich für ein Objekt mehrere Namen zu haben, zum Beispiel "Mark Twain" und "Samuel Clemens" sind zwei Namen für denselben Autor.
Wir betrachten das Folgende:
String strA = new String ("Der Gingham Hund"); String strB = strA;
strA == strB
strA.equals( strB )
true
.
In dem folgenden Code, wird equals()
WAHR oder
FALSCH anzeigen?
String lit1 = "ein Stringliteral" ; String lit2 = "ein Stringliteral" ; if ( lit1.equals( lit2 ) ) System.out.println("WAHR"); else System.out.println("FALSCH");