En comparant entier Tableaux en Java. Pourquoi ne pas == travail?

Je suis en train d'apprendre Java et vient avec ce subtil fait à propos de la langue: si je déclare deux entiers Tableaux avec les mêmes éléments et de les comparer à l'aide de == le résultat est false. Pourquoi est-ce arrivé? Ne doit pas la comparaison évaluer à true?

public class Why {

    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};

        System.out.println(a == b);
    }

}

Merci d'avance!

Non, parce que == compare les références, et non des valeurs.
D'autres ont répondu à la question, mais je vais ajouter que c'est une chose très importante à comprendre en Java, ou n'importe quel langage a objets ou des structures comme des références. Comme l'écrit, vous êtes la création de deux objets différents qui ont les mêmes numéros. Si vous aviez écrit "int[] b = a;" puis b, pointant vers la même mémoire comme un, et alors a==b est vrai.
C'est un peu trop générique. C# et python par exemple, avoir des objets comme des références mais == va encore donner le bon résultat (bien pour python au moins, c# a ses propres inconvénients).
Je ne veux pas laisser entendre que == se comportaient de la même dans chaque langue avec des références, donc mon mal si c'est comment il est venu. Je voulais souligner l'importance de comprendre les notions de références et la mémoire, dans l'ordre du programme avec succès dans ces langues. À mon humble avis il n'y a pas de "bonne" pour l'opérateur==, puisque l'égalité est un nuancée concept quand vous avez des références. Si vous ne comprenez pas les références, vous n'avez aucune chance de comprendre les différents types de l'égalité correctement.

OriginalL'auteur rodrigoalves | 2013-01-30