Java 添加char和int

Java 添加char和int,java,char,int,Java,Char,Int,据我所知,字符是一个单个字符,即字母、数字、标点符号、制表符、空格或类似的字符。因此,当我这样做时: char c = '1'; System.out.println(c); 输出1正是我所期望的。那为什么我这么做的时候: int a = 1; char c = '1'; int ans = a + c; System.out.println(ans); 我得到的结果是输出50?您得到的结果是因为它添加了字符的长度。必须先将其转换为整数。数字1是ASCII码49。编译器正在对您的请求执行唯一

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

char c = '1';
System.out.println(c);
输出1正是我所期望的。那为什么我这么做的时候:

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

我得到的结果是输出50

您得到的结果是因为它添加了字符的长度。必须先将其转换为整数。

数字1是ASCII码49。编译器正在对您的请求执行唯一明智的操作,并将类型转换为int。

字符是一个伪装的int。字符通过将字符编码为int来表示字符。例如,“c”用49编码。当您将它们相加时,会得到一个int,它是字符的代码和int的值之和。

您最后得到的是out
50
,因为您已经告诉Java在下面一行中将相加的结果视为
int

int ans = a + c;
您将
ans
声明为
char
,而不是
int

像这样:

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

因为您正在将c(1)的值添加到unicode值'a',即49。前128个unicode点值与ASCII相同,您可以在此处找到:

请注意,Chr“1”是49年12月。其他unicode点如下所示:


'1'是一个数字,而不是一个数字,用ASCII编码,其值为49

Java中的字符可以升级为int,因此如果您要求将类似于1的int添加到类似于“1”的字符(别名49),则更窄的类型char将升级为int,得到49,+1=>50

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

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

“char”实际上只是一个两字节的无符号整数

'1'
1
非常不同<代码>'1'编码为两字节值49


“字符编码”是您要研究的主题。或者来自Java语言规范:

它不是一个“伪装的int”,而是一个整型(整数)值。@goldilock你说的正是我的意思。好吧,但是(吹毛求疵;/)一个
int
是一个Java类型,而一个char不是一个int类型的伪装。它是一个字符,但它确实有一个整数值(就像
int
一样)。只需添加引用,尽管您可以要求编译器生成此表,但它可能与