It is equivalent to use the equality == operator and the equals method to compare two objects if the equals
method inherited from Object has not been overridden. In this case both checks compare the object references.
But as soon as equals is overridden, two objects not having the same reference but having the same value can be equal. This rule spots
suspicious uses of == and != operators on objects whose equals methods are overridden.
String firstName = getFirstName(); //String overrides equals
String lastName = getLastName();
if (firstName == lastName) { ... }; // Non-compliant; false even if the strings have the same value
String firstName = getFirstName();
String lastName = getLastName();
if (firstName != null && firstName.equals(lastName)) { ... };
Comparing two instances of the Class object will not raise an issue.
Class c;
if(c == Integer.class) { //No issue raised
}