你能用==比较字符吗?

2022-09-04 01:43:47

对于字符串,您必须使用等于来比较它们,因为 == 仅比较引用。

如果我将字符与 == 进行比较,它是否给出预期结果?


我在stackoverflow上看到了类似的问题,例如

但是,我还没有看到有人询问在字符上使用==。


答案 1

是的,就像任何其他基元类型一样,您可以通过比较它们。char==

您甚至可以直接将char与数字进行比较,并在计算中使用它们,例如:

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
    }
}

将打印:

97
true
98
b

答案 2

是的,但也不是。

从技术上讲,比较两个 s。所以在代码中,如下所示:==int

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

Java 正在隐式地将该行转换为 .a == b(int) a == (int) b

但是,这种比较仍然“有效”。