学习java课程
我正在为一项竞赛而学习,我的学习指南有以下代码:学习java课程,java,Java,我正在为一项竞赛而学习,我的学习指南有以下代码: 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点。有人能帮我
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点。有人能帮我吗
谢谢 在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]和列表[2]中的值是字符文本“1”和“2”,分别编码为ASCII值49和50。另外两个是ASCII值为3和4的字符(都是控制字符) 在Java中,当您添加不是
float
s、double
s或long
s的数字时,参数将升级为int
s。因此,添加char
s'1'+'2'+3+4与添加int
s49+50+3+4相同,后者是int
106
如果将加法的结果转换为字符
System.out.println((char) (list[0] + list[1] + list[2] + list[3] + list[4]));
结果是“j”,106的ASCII字符。
list[3]=3
是ASCII表示而不是实际的数字。这是因为它在代码中添加字符值,而不是它填充的数字,但是列表[0]还没有初始化,为什么你这么确定它有一个零值??Java会自动将数组初始化为0
,false
,或者null
Awesome。这是有道理的。谢谢你的帮助!