String stringG = "Red Delicious" ; String stringH = "Red Delicious" ; if (stringG == stringH) System.out.println( "Ein Literal" ); else System.out.println( "Nicht gleich" );
Ein Literal
Denkt daran, dass diese Optimierung nur
für Stringliterale gilt, die die gleichen Zeichen enthalten.
Also verweisen in dem oben stehenden die beiden Variablen
auf ein und dasselbe Objekt.
==
gibt true
zurück, da
stringG
und stringH
identische Referenzen enthalten.
equals()
MethodeHier ist eine weitere heikle Situation:
class ArrayGleichheit { public static void main ( String[] args ) { int[] arrayE = { 1, 2, 3, 4 }; int[] arrayF = { 1, 2, 3, 4 }; if (arrayE.equals( arrayF ) ) System.out.println( "Gleich" ); else System.out.println( "Nicht gleich" ); } } Ausgabe: Nicht gleich
Die equals()
Methode für Arrays gibt den gleichen Boole'schen Wahrheitswert zurück wie der ==
-Operator.
Wäre es gut eine Methode zu haben, die zwei Arrays untersucht (wie die zwei oben stehenden)
und true
oder false
zurückgibt, je nachdem welche Elemente die Arrays enthalten?