关于java:你可以将字符与==进行比较吗?

Can you compare chars with ==?

本问题已经有最佳答案,请猛点这里访问。

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

如果我将chars与==比较,它会给出预期的结果吗?

我在StackOverflow上也看到过类似的问题,例如

  • Java中的=VS相等()的区别是什么?

但是,我还没有看到一个询问关于在chars上使用==的问题。


是的,char和其他任何原始类型一样,您可以通过==比较它们。

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

1
2
3
4
5
6
7
8
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
    }
}

将打印:

1
2
3
4
97
true
98
b

是的,但也不是。

从技术上讲,==比较2 int。所以在下面的代码中:

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

Java是隐式地将EDCOX1的4行转换成EDCOX1×5。

然而,这种比较仍然"有效"。