针对老师解答提出的疑问
来源:3-5 选择练习
qq_粽翎_0
2019-11-05 10:17:32
老师那条解答被采纳了不能回复,所以老师的解答贴在这里:
ch + 1:Java底层会先使用‘8’转换对应的ASCII码十进制的值进行加法运算,‘8’对应ASCII为56,56+1会得到57对应值。然后它可以自动转换为char类型,再和case进行匹配。
这个56+1=57是字符‘8’的加法加1位吗? 如果相加是整数型则不会将最后的结果57自动转换为char类型吧,需要强制类型转换才对吧
3回答
同学你好,你的理解是正确的,例如如下代码:
public static void main(String[] args) { int ch=1; int r=10; switch(ch+'A') { case 64:r=r+3; case 65:r=r+5; case 66:r=r+6;break; default: r=r+8; } System.out.println(r); }
输出结果:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕酷酷
2019-11-05
同学你好,
1、对于第一个问题,你的理解是正确的,ch+1会自动强转为char类型,
2、这里说最终还会是char类型,是因为这里ch+1相当于ch+1赋值给ch变量,判断的还是ch变量,ch变量为char类型, 最终还会是char类型。
3、switch后面括号中可以使用整型、char类型和字符串类型!如下:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕酷酷
2019-11-05
同学你好,你的理解是正确的,其实这里老师所描述的自动转换为char类型的含义就是指,在Java底层中,switch会帮我们自动完成转换的过程,因为switch相当于一个匹配的过程,在Java中规定,switch语句执行的条件判断最终的转换是不会改变类型并且是严格相等,也就是switch中的判断不管中间过程怎样转换,最终还会是char类型,所以会一直进行char类型的比较。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题