我正在参加比赛,我的学习指南有以下代码:
char[] list=new char[5];
list[1] = '1';
list[2] = '2';
list[3] = 3;
list[4] = 4;
System.out.println(list[0] + list[1] + list[2] + list[3] + list[4]);
输出是106,但我不知道它是如何得到的。我以为是10.有人可以帮我吗?
谢谢!
答案 0 :(得分:4)
在Java中,知道'n' != n
。这意味着char
的数值不等于char
本身。 char
的数值是其Unicode值。数字'0'
- '9'
分别位于Unicode代码点48-57。数字 n 位于代码点n + 48
。
您没有初始化数组的第一个char
list[0]
,因此它具有空字符的初始值,Unicode点0
。
2个字符= 48 * 2,加上0 + 1 + 2 + 3 + 4 = 96 + 10 = 106。
答案 1 :(得分:1)
关键是list [1]和list [2]中的值是字符文字'1'和'2',它们分别被编码为ASCII值,49和50。另外两个是ASCII值为3和4的字符(两者都是控制字符)
在Java中,当您添加的数字不是float
,double
或long
时,参数会提升为int
s。因此,添加char
s'1'+'2'+ 3 + 4与添加int
s 49 + 50 + 3 + 4相同,即int
106。
如果将添加结果转换为字符
System.out.println((char) (list[0] + list[1] + list[2] + list[3] + list[4]));
结果为'j',即106的ASCII字符。