A test for identity asks whether two variables refer to exactly
the same object.
A test for equality asks whether two variables refer to
values that are equivalent.
Of course, the meaning of equivalent is inheritently domain specific.
Object-oriented languages allow the programmer to control the meaning
of the equality test by allowing the redefinition of a standard method.
(for example, equals in Java).