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?
 
     
     
     
    