Java字符相加结果存疑:为何输出116?求字符'2'的ASCII值
为什么你的Java代码输出116而不是68?
嘿,我来帮你拆解这个问题,核心是你混淆了字符'2'和整数2的区别!
问题出在哪?
你的代码里b='2'是字符类型,不是你以为的整数2。Java中char类型在参与算术运算时,会自动转换为对应的ASCII码值(int类型)来计算:
- 字符
'B'的ASCII值是66 - 字符
'2'的ASCII值是50 - 所以
a + b实际执行的是66 + 50 = 116,这个结果是int类型,直接打印就输出116了。
怎么得到你预期的68?
如果你想把'B'的ASCII值和数字2相加,需要把字符'2'转换成对应的整数,或者直接用整数2:
- 方法1:直接用整数2替换字符'2':
char a = 'B'; int b = 2; int c = a + b; System.out.println(c); // 输出68 - 方法2:把字符'2'转为对应的数字值:
char a = 'B', b='2'; int numB = Character.getNumericValue(b); // 把字符'2'转成整数2 int c = a + numB; System.out.println(c); // 输出68
字符'2'的ASCII值是多少?
字符'2'的ASCII值是50。你可以用一行代码快速验证:
System.out.println((int)'2'); // 输出50
内容的提问来源于stack exchange,提问作者Amarnath Singh
相关产品推荐
相关产品推荐

