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
一样)。只需添加引用,尽管您可以要求编译器生成此表,但它可能与