Domo ist Fugito.
Diesmal ist ein kleines Memorandum.
abschließend,
"** == Operator bestimmt Identität und Die Methode equals bestimmt Identität und Äquivalenz ** "
Es scheint einen Unterschied zu geben.
"Ob sie dieselbe Instanz sind oder nicht".
"Die in der Instanz gespeicherten Werte sind gleich Ob es ist oder nicht. "
Ein Beispiel ist unten gezeigt.
public class Example{
public static void main(String[] args){
String s1 = "012";
String s2 = new StringBuilder("012").toString();
if(s1 == s2){
System.out.println("true");
}else{
System.out.println("false");
}
if(s1.equals(s2)){
System.out.println("true");
}else{
System.out.println("false");
}
}
}
"s1 == s2" bedeutet "** ob s1 und s2 dieselbe Instanz sind **" Es wird beurteilt. Im obigen Programm sind s1 und s2 unabhängig Als Instanz erstellt. Daher die gleiche Instanz Ich kann das nicht sagen, also wird ** false ** zurückgegeben. Übrigens wie folgt Beim Umschreiben wird s1 == s2 wahr.
String s1 = "012";
String s2 = s1;
Andererseits ist die Methode equals für den Operator == in der Methode zuerst dieselbe. Nach der Bestimmung des Geschlechts wird die Äquivalenz bestimmt. Hier ** für s1 und s2 Da das gleiche String-Literal "012" gespeichert ist **, ist s1.equals (s2) Ist wahr **.
・ == Operator bestimmt ** Identität ** -Die Methode equals bestimmt ** Identität und Äquivalenz ** -Identitätsurteil ist "** Ist es die gleiche Instanz " ・ Die Beurteilung der Äquivalenz ist "" in der Instanz gespeichert Ob die Werte gleich sind ** "
Recommended Posts