Contenu du cours
Notions de Base de Java
Notions de Base de Java
Pool de Chaînes, Méthode Equals()
La méthode equals()
Ce chapitre fournit un bref aperçu de la méthode equals()
. Cette méthode est utilisée pour comparer des objets et est couramment utilisée avec des objets String. Examinons un exemple de création de deux variables de chaîne identiques et de leur comparaison à l'aide de ==
:
Main
package com.example; public class Main { public static void main(String[] args) { String first = new String("string"); String second = new String("string"); System.out.println(first == second); } }
Dans la réponse, nous obtenons "false", mais pourquoi ? Les valeurs des deux variables de chaîne sont les mêmes et égales à "string". C'est parce que ==
compare les références aux objets en mémoire, pas les valeurs réelles. Nos objets sont en dehors du String pool.
String pool
Qu'est-ce que le String Pool ? C'est une zone dans la mémoire heap qui est allouée lors de la création d'objets de chaîne. Si nous créons un objet String avec la valeur "string" et ensuite créons un autre objet String avec la même valeur, les deux objets feront référence au même objet en mémoire, qui est situé dans le string pool.
Alors pourquoi avons-nous obtenu "false" dans notre cas ? C'est parce que nous avons contourné le string pool en créant des objets en utilisant la syntaxe String first = new String("string");
. Lorsque nous créons un objet String en utilisant une syntaxe différente, comme String first = "string";
, il sera placé dans le string pool.
Considérons un exemple de code :
Main
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first == second)); System.out.println("Result of comparing first and third: " + (first == third)); } }
Considérons un diagramme expliquant comment cela fonctionne et quels objets se trouvent dans le String Pool
.
Comment comparons-nous les valeurs des chaînes dans le String Pool et celles en dehors ? À cet effet, Java fournit la méthode equals
, qui compare les valeurs de nos objets String
au lieu de leurs références. Considérons un exemple de code où nous comparons des chaînes en utilisant la méthode equals
au lieu de ==
.
Main
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first.equals(second))); System.out.println("Result of comparing first and third: " + (first.equals(third))); } }
Maintenant, nous pouvons voir que nous avons la comparaison correcte.
Merci pour vos commentaires !