Wenn die erste Hälfte des Ausdrucks true
ist, dann kann der gesamte Ausdruck
telefonbuch[ j ] != null && telefonbuch[ j ].getName().equals( targetName )
entweder true
oder false
sein.
suchen()
MethodeTelefonEintrag suchen( String targetName ) { for ( int j=0; j < telefonbuch.length; j++ ) { if ( telefonbuch[ j ] != null && telefonbuch[ j ].getName().equals( targetName ) ) return telefonbuch[ j ]; } return null; }
Ihr könntet Euch bei diesem Ausdruck unkomfortabel fühlen (klickt mehrmals mit der Maus für weitere Unterstützung):
telefonbuch[ j ].name.equals( targetName )
Betrachten wir ihn Stück für Stück:
telefonbuch[ j ]
enthält eine Referenz auf ein TelefonEintrag
s-Objekt.TelefonEintrag
s-Objekt enthält eine Instanzvariable name
.name
enthält eine Referenz auf ein Stringobjekt.equals()
Methode.equals()
Methode wird mit dem String verwendet, auf den targetName
verweist.true
oder false
, je nachdem ob die beiden Strings äquivalent sind oder nicht.Weitere Verzwicktheit: Beachtet, dass die Methode eine Referenz auf ein Objekt zurückgibt:
public TelefonEintrag suchen( String targetName )
Es ist ausgezeichnet für eine Methode eine Referenz auf ein Objekt zurückzugeben. Diese Referenz kann dann verwendet werden, um eine der Methoden des Objekts aufzurufen.
Das ist kompliziert. Wenn Ihr Euch noch immer unbehaglich fühlt, macht Euch deswegen keine allzu großen Gedanken. Lest in Ruhe den Code und die Erklärungen noch einmal durch und macht dann weiter.
Ergibt der Ausdruck
targetName.equals( telefonbuch[ j ].getName() )
den gleichen Wert wie
telefonbuch[ j ].getName().equals( targetName )