考虑以下代码:
System.out.println('G'+2);
输出为73。我能知道为什么以及如何吗?
在Java中,a char在UTF-16编码中占16位。
char
UTF-16
G的unicode是U+0047二进制的0000 0000 0100 1111。
G
U+0047
0000 0000 0100 1111
当您将a char和an int(32位)相加时,char将int通过插入0其二进制表示的开头来转换为。因此0000 0000 0100 1111被转换为0000 0000 0000 0000 0000 0000 0100 1111(十进制为71)。
int
0
0000 0000 0000 0000 0000 0000 0100 1111
这就是为什么你得到73。
73