Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Pool de Chaînes, Méthode Equals() | Chaîne
Notions de Base de Java
course content

Contenu du cours

Notions de Base de Java

Notions de Base de Java

1. Démarrer
2. Types de Base et Opérations
3. Boucles
4. Tableaux
5. Chaîne

book
Pool de Chaînes, Méthode Equals()

La méthode equals()

Ce chapitre propose un aperçu succinct de la méthode equals(). Cette méthode permet de comparer des objets et est couramment utilisée avec les objets String. Examinons un exemple de création de deux variables de chaîne identiques et de leur comparaison à l'aide de == :

java

Main

copy
123456789
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 identiques et égales à "string". Cela s'explique par le fait que == compare les références des objets en mémoire, et non les valeurs réelles. Nos objets se trouvent en dehors du String pool.

String pool

Qu'est-ce que le String Pool ? Il s'agit d'une zone de la mémoire heap qui est allouée lors de la création d'objets de type chaîne. Si nous créons un objet String avec la valeur "string" puis un autre objet String avec la même valeur, les deux objets feront référence au même objet en mémoire, situé dans le string pool.

Pourquoi avons-nous obtenu "false" dans notre cas ? C'est parce que nous avons contourné le string pool en créant les objets avec la syntaxe String first = new String("string");. Lorsque nous créons un objet String avec une syntaxe différente, telle que String first = "string";, il sera placé dans le string pool.

Considérons un exemple de code :

java

Main

copy
1234567891011
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 schéma expliquant le fonctionnement et les objets présents dans le String Pool.

Comment comparer les valeurs des chaînes dans le String Pool et celles en dehors ? À cet effet, Java propose la méthode equals, qui compare les valeurs de nos objets String au lieu de leurs références. Examinons un exemple de code où nous comparons des chaînes à l'aide de la méthode equals au lieu de ==.

java

Main

copy
1234567891011
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))); } }

Nous pouvons maintenant constater que nous avons la comparaison correcte.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 7

Demandez à l'IA

expand
ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

course content

Contenu du cours

Notions de Base de Java

Notions de Base de Java

1. Démarrer
2. Types de Base et Opérations
3. Boucles
4. Tableaux
5. Chaîne

book
Pool de Chaînes, Méthode Equals()

La méthode equals()

Ce chapitre propose un aperçu succinct de la méthode equals(). Cette méthode permet de comparer des objets et est couramment utilisée avec les objets String. Examinons un exemple de création de deux variables de chaîne identiques et de leur comparaison à l'aide de == :

java

Main

copy
123456789
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 identiques et égales à "string". Cela s'explique par le fait que == compare les références des objets en mémoire, et non les valeurs réelles. Nos objets se trouvent en dehors du String pool.

String pool

Qu'est-ce que le String Pool ? Il s'agit d'une zone de la mémoire heap qui est allouée lors de la création d'objets de type chaîne. Si nous créons un objet String avec la valeur "string" puis un autre objet String avec la même valeur, les deux objets feront référence au même objet en mémoire, situé dans le string pool.

Pourquoi avons-nous obtenu "false" dans notre cas ? C'est parce que nous avons contourné le string pool en créant les objets avec la syntaxe String first = new String("string");. Lorsque nous créons un objet String avec une syntaxe différente, telle que String first = "string";, il sera placé dans le string pool.

Considérons un exemple de code :

java

Main

copy
1234567891011
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 schéma expliquant le fonctionnement et les objets présents dans le String Pool.

Comment comparer les valeurs des chaînes dans le String Pool et celles en dehors ? À cet effet, Java propose la méthode equals, qui compare les valeurs de nos objets String au lieu de leurs références. Examinons un exemple de code où nous comparons des chaînes à l'aide de la méthode equals au lieu de ==.

java

Main

copy
1234567891011
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))); } }

Nous pouvons maintenant constater que nous avons la comparaison correcte.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 7
Nous sommes désolés de vous informer que quelque chose s'est mal passé. Qu'est-il arrivé ?
some-alt