Java Reference
In-Depth Information
Implementing the equals Method
The first comparison is to see whether one object is equal to another. As we saw previously, the equality
and inequality operators determine only whether two objects use the same object reference (that is, the
same place in memory). Consequently, two different objects, each with its own memory address, are
never equal. The following class might help illustrate the issue (see Listing 4-27).
Listing 4-27. Using the equality operator with objects
package com.apress.javaforabsolutebeginners .examples.comparing;
public class CompareTest {
public static void main(String[] args) {
Object a = new Object();
Object b = new Object();
Object c = b;
System.out.println(a == b);
System.out.println(b == c);
}
}
That code prints “false” for the first comparison and “true” for the second. In essence, we create a
single object with two names ( b and c ), so the second comparison yields a value of “true.” The new
keyword offers a big hint here. For c , we don't create a new object, just another reference to an existing
one. To see whether two objects are equal, we have to compare objects that implement the equals
method. Let's return to our Person class and expand it to have an equals method (see Listing 4-28).
Listing 4-28. Person class with equals method
package com.apress.javaforabsolutebeginners .examples.comparing;
public class Person {
String firstName;
String lastName;
public Person (String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public boolean equals(Person p) {
if (p == null) {
return false;
}
if (p == this) {
return true;
}
Search WWH ::




Custom Search