学习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。这是有道理的。谢谢你的帮助!