Comment la méthode equals() fonctionne

Je suis à fouiller dans les bases de Java.
Je déduis de ce l'article, que java méthode equals signifie que, si deux objets sont égaux, alors ils doivent avoir le même hashCode().

Voici mon exemple.

public class Equals {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String a = new String("a"); 
        String b = new String("a");
        System.out.println("a.hashCode() "+a.hashCode());
        System.out.println("b.hashCode() "+b.hashCode());
        System.out.println(a == b); 
        System.out.println(a.equals(b));

    }

}

de sortie:
un.hashCode() 97
b.hashCode() 97
faux
vrai

Réelle langage Java méthode equals

  public boolean equals(Object obj) { 
    return (this == obj); 
  }

Dans mon exemple ci-dessus, un.equals(b) a renvoyé true, ce qui signifie la condition a==b est satisfaite. Mais alors, pourquoi a==b est de retour faux dans cet exemple?

Ne sont pas hashCode et adresse de l'un et de même?
Aussi, est hashCode contre, lorsque nous disons a==b ou autre chose?

Ne vous laissez pas distraire par le code de hachage. Ce n'est pas le facteur déterminant de l'égalité. Demandez-vous, combien de codes de hachage peut-il y avoir si la resut est un entier? Maintenant, combien de chaînes de caractères peuvent y être?
Hashcode != Adresse. Hashcode valeur est couramment utilisé comme un index dans une table de hachage, mais il est souvent substituée à produire de meilleurs de hachage.

OriginalL'auteur srk | 2013-04-18