Eine gute Antwort könnte sein:

Ja. Sie müssen jedoch vorsichtig sein, wie Sie das Ergebnis verwenden.

Äquivalenz von Aliasen

Hier ist das Beispielprogramm (noch einmal!), mit dieser Änderung:

import java.awt.*;
class EqualsDemo4
{
  public static void main ( String arg[] )
  {
    Point pointA = new Point( 7, 99 );     // pointA verweist auf ein Point-Objekt
    Point pointB = pointA;                 // pointB verweist auf dasselbe Objekt

    if ( pointA.equals( pointB ) )
    {
      System.out.println( "Die zwei Variablen verweisen auf dasselbe Objekt," );
      System.out.println( "oder verschiedene Objekte mit den gleichen Daten." );
    }
    else
      System.out.println( "Die zwei Variablen verweisen auf verschiedene Objekte" );

  }
}

Die Abbildung der Situation ist die gleiche als wie zuvor. Aber jetzt wird die equals() Methode verwendet. Sie:

  1. Verwendet die Referenz pointA um x und y von dem Objekt zu bekommen.
  2. Verwendet die Referenz pointB um x und y von dem Objekt zu bekommen.
  3. Bestimmt, dass die zwei x gleich sind und das die zwei y gleich sind.
  4. Gibt wahr zurück.

Die Tatsache, dass das Objekt in Schritt 1 und Schritt 2 dasselbe ist spielt keine Rolle. Die x, die überprüft werden sind die gleichen, und die y, die überprüft werden, sind die gleichen, also ist das Ergebnis wahr.

FRAGE 21:

Wenn der == -Operator wahr zurückgibt, wird dann die equals() Methode wahr zurückgeben, immer?