equals() et l'opérateur “==” en java
Je sais que equals()
permettra de comparer la valeur des objets, le '==' opérateur permet de vérifier si la variable point à la même mémoire.
Je ne comprends pas comment equals()
comparer la valeur des objets, par exemple:
class Test {
public Test(int x, float y) {
this.x = x;
this.y = y;
}
int x,
float y;
}
Test test1 = new Test(1,2.0);
Test test2 = new Test(1,2.0);
Donc, si j'utilise equals()
, il va comparer chacune des propriétés de chaque objet?
Et si nous parlons de la Chaîne? à l'aide de equals() et l'opérateur “==”, avons-nous encore besoin de surcharger la equals()?
OriginalL'auteur | 2011-05-01
Vous devez vous connecter pour publier un commentaire.
Pas, si vous ne supplantent pas la
equals
-méthode dans votre classe, puisequals
est le même que==
. Voir la la documentation pour cela:La documentation indique également que les exigences qui y sont pour
equals
méthodes dans le cas où vous souhaitez le mettre en œuvre.equals
méthode est héritée dans ce cas deObject
qui a la mise en œuvre suivants:public boolean equals(Object obj){return this==obj;}
OriginalL'auteur theomega
Pas à moins que vous surcharger correctement selon les règles fixées par Joshua Bloch.
Le comportement par défaut vérifie l'égalité des références à l'aide de
==
.Il est important de remplacer
equals
ethashCode
pour vos objets, surtout si vous avez l'intention de les utiliser en java.util.Les Collections.Si ce 'random' individu réellement conçu et écrit de la norme que vous êtes en citant? Cela le rend-il idiot?
Les normes sont un effort de groupe. Je suis sûr qu'il y avait beaucoup d'autres personnes impliquées.
Je ne. Vous devriez essayer de penser de temps en temps aussi! Peut vous aider à vous débarrasser de votre tendance à idolâtrer les gens.
Veuillez prendre ailleurs
OriginalL'auteur duffymo
La méthode equals est définie dans la classe Object, et depuis tous les objets en Java, implicitement ou explicitement, héritent de cette classe, ils hériteront de la méthode equals() tel que mis en œuvre par l'Objet. L'implémentation par défaut dans l'Objet de simplement retourner la valeur true si les objets passent le "==".
Cependant, vous êtes libre de remplacer la méthode equals() dans votre classe et de préciser les critères qui doivent être vérifiées pour voir si les deux objets sont véritablement égaux. Par exemple, vous pourriez dire que les deux cas ne sont égaux si chacun de ses attributs contiennent les mêmes valeurs que d'un autre objet, ou vous pouvez au lieu de simplement vérifier quelques attributs qui constituent les objets "métier" et ignorer les autres.
L'égalité de Chaîne de classes suivent les mêmes règles que toute autre classe Java; "==" sera vrai si elles ne se réfèrent à la même instance, et equals() sera vrai si elles contiennent les mêmes valeurs.
OriginalL'auteur Navin Peiris