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.
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
Oui, mais aussi non.
Techniquement, ==
compare deux int
s. 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.