public class Test {
public static void main(String[] args) {
Object o1 = new Object();
Object o2 = new Object();
System.out.print((o1 == o2) + " " + (o1.equals(o2)));
}
}
I read this in a different answer:
The
==
operator tests whether two variables have the same references (aka pointer to a memory address).Whereas the
equals()
method tests whether two variables refer to objects that have the same state (values).
Here, since o1
and o2
reference two different objects, I get why ==
returns false.
But both the objects are created using the default constructor of the Object
class, and therefore have same values. Why does the equals()
method return false?