zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite
String lit1 = "ein Stringliteral" ;
String lit2 = "ein Stringliteral" ;
if ( lit1.equals( lit2 ) )
  System.out.println("WAHR");
else
  System.out.println("FALSCH");

Antwort:

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.

Beispiel fortgesetzt

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.");
  }

}

FRAGE 24:

Angenommen wir wissen, dass str1.equals( str2 ) FALSCH ist.

Was können wir dann über ( str1 == str2 ) sagen?