java菜鸟问个程序问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 10:24:46
帮忙看下这个程序
public class yunsuan {
public static void main(String args[]) {
char ch = '8';
int x = 5;
int y = 0;
y = ch + x;
System.out.println(ch);
}
}为什么最后输出的是61?
这种不是一个类型的数据运算有什么规则?
谢谢

这是典型的理解错误,被单引号''包括的部分在运算的时候是按照ASCII码进行运算的,而不是你实际写在里面的部分,举个例子:char ch = 'a',这时候,char实际参与计算的时候是计算字母a的ASCII码值,而不是a本身。

所以,楼主的问题就很明白了,解决也很简单。在输出的部分减去数字部分开始的ASCII值就可以了。因为数字是从48开始的,所以在输出的时候,-48.
这样实际的输出结果是61 - 48 = 13.

同样,如果是处理字母的部分,也要减去字母开始部分的ASCII值,也就是字母a的ASCII值。

'8'的ASC码是56啊!所以和int 型相加是61!

输出的是8 啊

输出应该是8