学习java的知识

时间:2015-10-16 21:21:06

标签: 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.有人可以帮我吗?

谢谢!

2 个答案:

答案 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中,当您添加的数字不是floatdoublelong时,参数会提升为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字符。