Which of the following statements about Object.equals(Object obj) are true?
A) It is reflexive: for any reference value x, x.equals(x) should return if and
only if x == x.
B) It is symmetric: for any reference values x and y, x.equals(y) should return
true if and only if x == y.
C) It is transitive: for any reference values x, y, and z, if x.equals(y)
returns true and y.equals(z) returns true, then should x == z be true.
D) It is consistent: for any reference values x and y, multiple invocations
of x.equals(y) consistently return true or consistently return false, provided
no information used in equals comparisons on the object is modified.
E) For any non-null reference value x, x.equals(null) should return false.