添加char和int

时间:2012-04-27 22:16:47

标签: java char int

据我所知,char是一个单个字符,即一个字母,一个数字,一个标点符号,一个标签,一个空格或类似的东西。因此当我这样做时:

char c = '1';
System.out.println(c);

输出1正是我的预期。那么为什么当我这样做时:

int a = 1;
char c = '1';
int ans = a + c;
System.out.println(ans);

我最终输出 50

7 个答案:

答案 0 :(得分:7)

你得到的是因为它正在添加char的ASCII value。您必须先将其转换为int。

答案 1 :(得分:2)

数字1是ASCII代码49.编译器正在做它对你的请求唯一合理的事情,并且对int进行类型转换。

答案 2 :(得分:2)

您最终没有使用50,因为您已告知Java将添加结果视为以下行中的int

int ans = a + c;

而不是int您将ans声明为char

像这样:

final int a = 1;
final char c = '1';
final char ans = (char) (a + c);
System.out.println(ans);

答案 3 :(得分:1)

因为你要将c(1)的值添加到'a'的unicode值,即49.前128个unicode点值与ASCII相同,你可以在这里找到:

http://www.asciitable.com/

注意Chr'1'是Dec 49.其余的unicode点在这里:

http://www.utf8-chartable.de/

答案 4 :(得分:0)

char是伪装的int。 char通过将其编码为int来表示字符。所以例如'c'用49编码。当你把它们加在一起时,你得到一个int,它是char的代码和int的值的总和。

答案 5 :(得分:0)

'1'是一个数字,而不是数字,并以ASCII编码为49.

Java中的Chars可以提升为int,所以如果你要求将类似1的int添加到像'1'这样的字符,别名49,则将更窄的类型char提升为int,得到49,+ 1 =&gt ; 50。

请注意,每个非数字字符都可以添加相同的方式:

'a' + 0 = 97
'A' + 0 = 65
' ' + 0 = 32

答案 6 :(得分:0)

'char'实际上只是一个双字节无符号整数。

'1'1非常不同。 '1'被编码为双字节值49。

“字符编码”是您要研究的主题。或者来自Java语言规范:http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.1