quelle est la différence entre l'opérateur == et equals()? (avec hashcode() ???)

J'apprenais hashcode plus en profondeur, et pensé que:

1. Si vous remplacez equals(), il est nécessaire de redéfinir hashcode ().

2. Pour savoir si 2 objets sont même objet, utilisez l'opérateur = =

Compte tenu de ces 2 facteurs, en Java, j'ai été en supposant que lorsque == operator est utilisé pour comparer les si 2 cas sont identiques ou non,

if(object1 == object2)

est en train de faire

if(object1.hashcode() == object2.hashcode())

Mais il semble que je me suis trompé en exécutant le test ci-dessous.

public class Main {

    public static void main(String[] args){
        Obj1 one = new Obj1();
        Obj1 two = new Obj1();
        //is this calling hashCode() in backend???
        if(one == two) {
            System.out.println("same");
        }
        else {
            System.out.println("nope");
        }
        //this is of course return true
        if(one == one) {
            System.out.println("one and one is same");
        }
    }
}

class Obj1 {
    @Override
    public int hashCode() {
        System.out.println("hashCode() is called");
        return 111;
    }
    @Override
    public boolean equals(Object another) {
        System.out.println("equals() is called");
        return false;
    }
}

Selon le test qui utilise == operator et voir si equals() est appelée et qu'il ne l'était pas.

Donc ma question est si == operator peut être utilisé pour comparer, si l'objet est le même ou pas, ce qui est le point de l'annulation de la equals() et hashCode() méthode de comparaison? N'est-ce pas == operator faire le travail déjà?

référence:

Primordial hashCode() - est-ce bien suffisant?

http://mindprod.com/jgloss/hashcode.html

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Objet)

merci les gars pour les explications. C'est pourquoi j'aime stackoverflow. Beaucoup de gens intelligents qui peuvent décrire et donner le bon exemple, beaucoup mieux que la documentation officielle qui fournit uniquement la définition 😀

OriginalL'auteur masato-san | 2010-12-22