[POO] symbole "==" et equals()
Bonjour.
Je sais que lorsque l'on compare deux objets avec le symbole ==, cela ne vaut VRAI que lorsque les deux objets sont en fait la même instance. Je sais aussi que la méthode equals dans la classe Object fait par défaut un == si elle n'est pas redéfinie, du coup, si je veux que equals compare mes objets par rapport à leurs attributs, je dois la redéfinir.
Mais là où je bloque, c'est avec les Strings. J'ai le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
class Main {
public static void main(String[] args) {
String s = new String("Blabla");
String v = new String("Blabla");
System.out.println(s.hashCode());
System.out.println(v.hashCode());
if (s == v)
System.out.println("s et v sont égales");
if (s.equals(v))
System.out.println("s et v sont égales sémantiquement");
}
} |
Ce code m'affiche en terminal :
Code:
1 2 3 4
|
1992251584
1992251584
s et v sont égales sémantiquement |
Je ne comprends pas pourquoi il rentre dans le second if. J'ai utiliser la déclaration new String, donc s et v ne sont pas les mêmes instances. Du coup, je ne rentre pas dans le premier if, mais je ne devrai pas non plus rentrer dans le second, vu que equals fait par défaut un ==.
Pouvez-vous m'expliquer ?
merci ;)