Si vous êtes comme moi, lorsque j'ai commencé à utiliser Java, je voulais utiliser l'opérateur "==" pour tester si deux instances de String étaient égales, mais pour le meilleur ou pour le pire, ce n'est pas la bonne façon de le faire en Java.
Dans ce tutoriel, je vais démontrer plusieurs façons différentes de comparer correctement les chaînes Java, en commençant par l'approche que j'utilise la plupart du temps. À la fin de ce didacticiel de comparaison de chaînes Java, je vais également expliquer pourquoi l'opérateur "==" ne fonctionne pas lors de la comparaison de chaînes Java.
Option 1: comparaison de chaînes Java avec la méthode equals
La plupart du temps (peut-être 95% du temps), je compare des chaînes avec la méthode equals de la classe Java String, comme ceci:
if (string1.equals(string2))
Cette méthode String equals examine les deux chaînes Java et si elles contiennent exactement la même chaîne de caractères, elles sont considérées comme égales.
En examinant un exemple de comparaison de chaîne rapide avec la méthode equals, si le test suivant était exécuté, les deux chaînes ne seraient pas considérées comme égales car les caractères ne sont pas exactement les mêmes (le cas des caractères est différent):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
Mais, lorsque les deux chaînes contiennent exactement la même chaîne de caractères, la méthode equals renvoie true, comme dans cet exemple:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Option 2: comparaison de chaînes avec la méthode equalsIgnoreCase
Dans certains tests de comparaison de chaînes, vous voudrez ignorer si les chaînes sont en majuscules ou en minuscules. Lorsque vous souhaitez tester l'égalité de vos chaînes de cette manière, sans respecter la casse, utilisez la méthode equalsIgnoreCase de la classe String, comme ceci:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
Option 3: comparaison de chaînes Java avec la méthode compareTo
Il existe également un troisième moyen, moins courant, de comparer les chaînes Java, et c'est avec la méthode StringThere compareTo. Si les deux chaînes sont exactement identiques, la méthode compareTo retournera une valeur de 0 (zéro). Voici un exemple rapide de ce à quoi ressemble cette approche de comparaison de chaînes:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Pendant que j'écris sur ce concept d'égalité en Java, il est important de noter que le langage Java inclut une méthode d'égalité dans la classe d'objet Java de base. Chaque fois que vous créez vos propres objets et que vous souhaitez fournir un moyen de voir si deux instances de votre objet sont "égales", vous devez remplacer (et implémenter) cette méthode égale dans votre classe (de la même manière que le langage Java fournit ce comportement d'égalité / comparaison dans la méthode String equals).
Vous voudrez peut-être jeter un œil à ceci ==, .equals (), compareTo () et compare ()