What is the difference between identity and equality in OOP (Object Oriented Programming)?
identity: a variable holds the same instance as another variable.
equality: two distinct objects can be used interchangeably. they often have the same id.
For example:
Integer a = new Integer(1);
Integer b = a;
a
is identical to b
.
In Java, identity is tested with ==
. For example, if( a == b )
.
Integer c = new Integer(1);
Integer d = new Integer(1);
c
is equal but not identical to d
.
Of course, two identical variables are always equal.
In Java, equality is defined by the equals
method. Keep in mind, if you implement equals you must also implement hashCode.