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?