web-dev-qa-db-fra.com

Pouvez-vous comparer les caractères avec ==?

Pour les chaînes, vous devez utiliser des égaux pour les comparer, car == compare uniquement les références.

Est-ce que cela donne le résultat attendu si je compare les caractères avec ==?


J'ai vu des questions similaires sur stackoverflow, par exemple.

Cependant, je n'en ai pas vu un qui demande l'utilisation de == sur les caractères.

6
abinmorth

Oui, char est comme tout autre type primitif, vous pouvez simplement les comparer par ==.

Vous pouvez même comparer les caractères directement aux nombres et les utiliser dans les calculs, par exemple:

public class Test {
    public static void main(String[] args) {
        System.out.println((int) 'a'); // cast char to int
        System.out.println('a' == 97); // char is automatically promoted to int
        System.out.println('a' + 1); // char is automatically promoted to int
        System.out.println((char) 98); // cast int to char
    }
}

imprimera:

97
true
98
b
10
Krzysztof Cichocki

Oui, mais aussi non.

Techniquement, == compare deux ints. Donc, dans un code comme celui-ci:

public static void main(String[] args) {
    char a = 'c';
    char b = 'd';
    if (a == b) {
        System.out.println("wtf?");
    }
}

Java convertit implicitement la ligne a == b en (int) a == (int) b.

Cependant, la comparaison fonctionnera toujours.

2
Pod