String lit1 = "ein Stringliteral" ;
String lit2 = "ein Stringliteral" ;
if ( lit1.equals( lit2 ) )
System.out.println("WAHR");
else
System.out.println("FALSCH");
In diesem Fall gibt es nur ein Objekt (ein Stringliteral), auf das
sowohl lit1 als auch lit2 verweisen.
Also erkennt equals(), dass die Daten äquivalent sind und es wird WAHR ausgegeben.
Hier ist das vorige Programm mit ein paar mehr if-Anweisungen:
class StringliteralBsp2
{
public static void main ( String[] args )
{
String str1 = "ein Stringliteral" ; // ein Literal erzeugen
String str2 = "ein Stringliteral" ; // str2 verweist auf dasselbe Literal
String msgA = new String ("Aufgepasst!"); // ein Objekt erzeugen
String msgB = new String ("Aufgepasst!"); // ein weiteres Objekt erzeugen
if ( str1 == str2 )
System.out.println( "Dies WIRD ausgegeben.");
if ( str1.equals(str2) )
System.out.println( "Dies WIRD ausgegeben.");
if ( msgA == msgB )
System.out.println( "Dies wird NICHT ausgegeben.");
if ( msgA.equals(msgB) )
System.out.println( "Dies WIRD ausgegeben.");
}
}
Angenommen wir wissen, dass str1.equals( str2 ) FALSCH ist.
Was können wir dann über ( str1 == str2 ) sagen?