The equality operator, when applied to reference types, compares the reference values, not the content of the objects. It returns true only when both references (variable values) point to the same object. We have demonstrated it several times already:
SomeClass o1 = new SomeClass();
SomeClass o2 = new SomeClass();
System.out.println(o1 == o2); //prints: false
System.out.println(o1 == o1); //prints: true
o2 = o1;
System.out.println(o1 == o2); //prints: true
This means that the equality operator returns false even when two objects of the same class with the same field values are compared. That is often not what programmers need. Instead, we usually need to consider two objects to be equal when they have the same type and the same field values. Sometimes, we even do not want to consider all the fields, but only those that identify the object as unique...