为什么字符型运算结果不一样

为什么字符型运算结果不一样

​一

char ch = '8';

ch+=1;

System.out.println(ch);  //9


char ch = '8';

System.out.println(ch+1); // 57


为什么???

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,原理是Java中字符char类型和int类型的数值进行运算时,java程序会将char类型转换为int类型的数字进行运算

按照同学询问的一和二情况,一返回的结果ch是char类型,所以运算完成后会将int类型再转换为char类型

而第二种情况是直接返回的ch+1,这样操作返回的是int类型的数值,所以结果是57

如果返回结果是char类型的,则按照第一种情况来执行;如果返回结果是int类型,则按照第二种情况来执行

祝学习愉快~

好帮手慕小班 2021-06-20 11:51:49

同学你好,同学可以这样理解:

'8'是个字符,对应在ASCII码转为int型的56​,ch+=1; 会在底层执行56加1的操作后(计算完成后),自动返回对应的char类型的形式的数据,也就是char类型的字符'9'.

而直接字符+1会自动把字符'8'按照ASCII码转为int型的56,再加1,结果为int类型的57。

这是直接执行+和+=的不同的底层解析。

祝学习愉快~

  • 提问者 AbelZephyr #1
    这样解释,是可以接受通,但是什么时候按照您解释的第一种情况执行,什么时候按您解释的第二种情况执行,这个您能细致的解释下吗,你不能拿结果去套理论,应该从原理上解释


    2021-06-25 22:14:26
好帮手慕小脸 2021-06-19 18:16:14

同学你好,

1、ch+=1;是先把ch类型转换为整型,然后再加1,得到结果赋值给ch,所以最后得到的答案是9

2、ch+1是先把ch类型转换为整型,然后再加1,得到结果之后再自动转换为char类型,所以得到的结果是57

祝学习愉快~

  • 提问者 AbelZephyr #1
    能不能讲的再细致点,比如说为什么,或者什么转化为什么,数值是多少,然后…
    2021-06-19 22:02:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师