ch+1的问题
switch(ch+1)里面值为16,直接输出System.out.println(ch+1)为何为57?
请明白人解答!
10
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕酷酷
2019-08-13 17:25:03
同学你好,可以这样理解:
1、直接输出不会进行字符转换的原因是:Java底层使用‘8’对应的ASCII码值,‘8’对应ASCII为56,56+1会得到57对应值。
而switch:switch在这里相当于一个匹配的过程,在Java中规定,switch语句执行的条件判断最终的转换是不会改变类型并且是严格相等,也就是switch中的判断不管中间过程怎样转换,最终还会是char类型,所以会一直进行char类型的比较。
2、 char ch='8'; int r=1; char ch2=ch+r;报错的原因是:因为JVM运算完后不知道结果是什么,所以会提示损失精度的错误,需要进行强转告诉JVM运算后的类型。ch在这里已经不是常量而是变量,只是将‘8’赋值给ch,因为是变量,存在着强制类型转换问题。
char ch3='8' +1 ;不会报错是因为char本身在ASCII码中可以用数字表示的,所以JVM运算完后可以用数字表示。并且‘8’字符在这里是常量,常量与常量相加是不存在类型转换的。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星