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() Methode
  TelefonEintrag 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 TelefonEintrags-Objekt.TelefonEintrags-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 )