Java 字符加法没有意义(对我来说)

Java Char addition makes no sense (to me)

所以我这里有这段代码:

char a = '1';
char b = '2';
System.out.println(a+b); \ Outputs 99

我想知道为什么,因为这段代码:

char a = '1' + '2';

    System.out.println(a); \ Outputs c

我想提升我的原始思维,请帮助志趣相投的人。

它们被添加为它们的十进制数字 ASCII 值。

隐式执行 a+b 的代码部分将它们作为整数相加。因此,如果您 运行 以下代码:

class Example {
    public static void main(String[] args) {
        char ch = '1';
        char ch2 = '2';
        int num = ch;
        int num2 = ch2;
        System.out.println("ASCII value of char " + ch + " is: " + num);
        System.out.println("ASCII value of char " + ch2 + " is: " + num2);
    }
}

你会看到每个字符的输出是

ASCII value of char 1 is: 49

ASCII value of char 2 is: 50

所以当你这样做时 System.out.println(a+b); 他们被添加为他们的整数值,结果是 99

字符具有真实的价值; 当你写

char a = 49;
char k = '1'; // both of them holds same character because '1' code in ascii 49

并且当您在算术运算中处理两个变量时,如果其中一个类型是(byte、short 或 char),则这些类型在 int 中提升,因此

System.out.println(a+b); // both of them promote int
char c = a + b; // assign c, 99 which represents 'c'