Bonjour à tous,
Je m'interroge sur le principe des comparaisons par référence ( == ).
Je viens de faire le test suivant :
Je pense que je me trompe, mais pour moi la référence (sur lequel se faisait le contrôle) était lié au hashcode de l'objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 String t1 = new String("toto"); String t2 = new String("toto"); System.out.println(t1.hashCode()); System.out.println(t2.hashCode()); System.out.println(t1==t2);
Or pour les String, il s'avère que dans mon exemple t1 et t2 , ont le même hashCode , mais ne sont pourtant pas égaux par référence ( t1==t2 -> false).
Donc ma question est la suivante , comment faire pour savoir ce qu'il compare dans le cas des références.
Il me semblait pourtant que dans le cas des String et aussi Integer, Float etc... , Java utilisait un pool d'objet pour optimiser sa mémoire, ce qui permettait dans le cas des Integer par exemple de faire des comparaisons de références en évitant l'appel à intValue().
Je ne sais pas vraiment si j'étais clair, mais si quelqu'un peut m'éclairer , je répondrais à toutes les questions que vous vous posez.
D'avance merci.
Zekid.
Partager