(À partir du 07/08/2020) </ span> </ p> </ td> </ tr> </ table> </ div>
</ p> </ td> </ tr> </ table>)
public class Human {
String name;
int hp;
public String toString(){
return "name:" + this.name + "/age:" + this.age;
}
}
Dans le cas ci-dessus
Valeur égale
Jugement de (==)
"Exactly the same existence" = "pointant vers la même valeur d'adresse"
same.java
Human h1 = new Human("Taro")
Human h2 = h1;
Puisque h1 est assigné à h2, il a la même instance A "nom: Taro".
La destination de référence fait également référence à la même adresse au 2112.
A ce moment, "h1 == h2" tient.
Équivalent
equals.java
Human h1 = new Human("Ziro");
Human h2 = new Human("Ziro");
Créer chaque instance → se référer à
Instance A "nom: Ziro" → 3322
Instance B "nom: Ziro" → 9191
"H1! = H2" tient
Cependant, le contenu de la chaîne de caractères est le même
Par conséquent, "h1.equalsa (h2)" est valable.
Oui, je comprends.
Mais,
Si vous continuez avec [Introduction à Java que vous pouvez comprendre clairement]([Introduction à Java que vous pouvez comprendre clairement]) et entrez le chapitre sur l'utilisation des API dans la seconde moitié
Il y a une instruction qui equals () ne fonctionne pas correctement à moins que vous ne spécifiiez les critères d'évaluation de «ce qui fait la même chose», mais c'est un peu déroutant.
Ce qui suit ne fonctionne pas correctement
Exemple 1) Comparez deux personnes
public class Main {
public static void main(String[] args) {
Human h1 = new Human();
h1.name = "Taro";
h1.age = 10;
Human h2 = new Human();
h2.name = "Taro";
h2.age = 10;
if ( h1.equals(h2) == true ) {
System.out.println("Same");
} else {
System.out.println("different") ;
}
}
}
Le contenu de traitement de equals () hérité de la classe Object est le suivant
"Pour le moment, si les valeurs sont égales, renvoie true."
Sera sous la forme de
public boolean equals(Object o) {
if (this == o) {
return true;
} else {
return false;
}
}
"Ce qu'il faut considérer comme le même contenu" est différent pour chaque classe, donc
Doit être défini individuellement
En d'autres termes, spécifiez en "remplaçant les égaux"
La condition est "Si les noms sont les mêmes, ils sont considérés comme le même humain"
Ensuite, ce sera comme suit
public class Human {
String name;
int age;
public boolean equals(Object o ) {
if (this == o) {
return true;
} if (o instanceof Human) { //Le remplacement supplémentaire suivant: Déterminez si o peut être converti en type humain
Human h = (Human)o; //(2) Downcast Object type o to Human type and assign it to h
if ( this.name.equals(h.name)) {
return true;
}
}
return false;
}
}
"SAME" s'affiche