Domo est Fugito.
Cette fois, c'est un petit mémorandum.
en conclusion,
"** == l'opérateur détermine l'identité et La méthode equals détermine l'identité et l'équivalence ** "
Il semble y avoir une différence.
"Que ce soit ou non la même instance".
"Les valeurs stockées dans l'instance sont les mêmes Que ce soit ou non. "
Un exemple est présenté ci-dessous.
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" signifie "** si s1 et s2 sont la même instance **" Il sera jugé. Dans le programme ci-dessus, s1 et s2 sont indépendants Créé comme une instance. Par conséquent, la même instance Je ne peux pas dire cela, donc ** false ** est renvoyé. Au fait, comme suit Une fois réécrit, s1 == s2 devient vrai.
String s1 = "012";
String s2 = s1;
D'autre part, la méthode equals est la même par l'opérateur == dans la méthode en premier. Après avoir déterminé le sexe, l'équivalence est déterminée. Ici, ** pour s1 et s2 Comme le même littéral de chaîne "012" est stocké **, s1.equals (s2) Est vrai **.
・ == L'opérateur détermine ** l'identité ** -La méthode d'égalité détermine ** l'identité et l'équivalence ** -Le jugement d'identité est "** Est-ce la même instance " ・ Le jugement d'équivalence est " stocké dans l'instance Si les valeurs sont identiques ** "
Recommended Posts