Comment comparer des chaînes en Java

Pour comparer les chaînes pour l’égalité, vous devez utiliser l’objet String de l’objet equals ou equalsIgnoreCase méthodes. Nous verrons aussi pourquoi il ne faut pas utiliser le == opérateur pour comparer des chaînes.



Comparaison de chaînes avec la méthode equals ()

Si nous avons besoin de comparer deux chaînes en java et que nous nous soucions également de la casse des chaînes, nous pouvons utiliser le equals() méthode.

Par exemple, l'extrait de code suivant déterminera si les deux instances de String sont égales sur tous les caractères, y compris la casse:


public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = 'Test123';
String secondString = 'Test' + 123;
String thirdString = 'TEST123';

if (firstString.equals(secondString)) {

System.out.println('first and second strings are equal');
}

if (firstString.equals(thirdString)) {

System.out.println('first and third string are equal');
}
} }

Production:

first and second strings are equal Noter:La deuxième instruction print n'est pas exécutée car la casse de firstString et thirdString ne correspond pas.

Comparaison de chaînes avec la méthode equalsIgnoreCase ()

Si nous avons besoin de comparer deux chaînes en java mais que nous ne nous soucions pas de la casse des chaînes, nous pouvons utiliser le equalsIgnoreCase() méthode.


Par exemple, dans l'extrait de code ci-dessus, si nous avons remplacé .equals() avec .equalsIgnoreCase() méthode, alors les deux instructions print sont exécutées:

public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = 'Test123';
String secondString = 'Test' + 123;
String thirdString = 'TEST123';

if (firstString.equalsIgnoreCase(secondString)) {

System.out.println('first and second strings are equal');
}

if (firstString.equalsIgnoreCase(thirdString)) {

System.out.println('first and third string are equal');
}
} }

Production:

first and second strings are equal
first and third string are equal

En rapport:



N'utilisez pas l'opérateur == pour comparer des chaînes

Noter:Lors de la comparaison de deux chaînes en java, nous ne devons pas utiliser le == ou alors ! = les opérateurs.

Ces opérateurs testent en fait les références, et comme plusieurs objets String peuvent représenter la même String, cela risque de donner la mauvaise réponse.


À la place, utilisez le String.equals(Object) méthode, qui comparera les objets String en fonction de leurs valeurs.

public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = 'Test123';
String secondString = 'Test123';
String thirdString = new String('Test123');

if (firstString == secondString) {

System.out.println('first and second strings are equal');
}

if (firstString == thirdString) {

System.out.println('first and third strings are equal');
}
} }

Production:

first and second strings are equal Noter:La deuxième instruction d'impression n'est pas exécutée.

Comparaison de chaînes avec des valeurs constantes

Lorsque vous comparez une chaîne à une valeur constante, vous pouvez placer la valeur constante sur le côté gauche d'égal pour vous assurer que vous n'obtiendrez pas un NullPointerException si l'autre chaîne est nulle.

Par example:


'baz'.equals(foo)

Alors que foo.equals('baz') lancera un NullPointerException si toto est nul, 'baz'.equals(foo) évaluera à false.

Une alternative plus lisible consiste à utiliser Objects.equals(), qui effectue une vérification nulle sur les deux paramètres:

par exemple. Objects.equals(foo, 'baz').



Comparaison de chaînes dans une instruction Switch

Depuis Java 1.7, il est possible de comparer une variable String à des littéraux dans une instruction switch. Assurez-vous que la chaîne n'est pas nulle, sinon elle lèvera toujours un NullPointerException. Les valeurs sont comparées à l'aide de String.equals, c'est-à-dire sensible à la casse.


public class CompareTwoStrings {
public static void main(String[] args) {
String stringToSwitch = 'A';


switch (stringToSwitch) {

case 'a':


System.out.println('a');


break;




case 'A':


System.out.println('A'); //the code goes here


break;




case 'B':


System.out.println('B');


break;




default:


break;
}
} }

Conclusion

Dans cet article, nous avons expliqué comment comparer des chaînes en java avec des exemples de code. Lorsque la casse des chaînes est importante, nous devrions utiliser .equals() et quand la casse n'est pas importante, alors nous devrions utiliser .equalsIgnoreCase().

De plus, nous ne devons pas utiliser le == opérateur pour comparer des chaînes, comme == l'opérateur vérifie la référence et non la valeur.