针对老师解答提出的疑问

针对老师解答提出的疑问

老师那条解答被采纳了不能回复,所以老师的解答贴在这里:

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);
	}

输出结果:

http://img1.sycdn.imooc.com//climg/5dc13cdb09aef65c02040132.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • qq_粽翎_0 提问者 #1
    理解了,非常感谢老师耐心解答!
    2019-11-05 17:15:25
好帮手慕酷酷 2019-11-05 16:50:54

同学你好,

1、对于第一个问题,你的理解是正确的,ch+1会自动强转为char类型,

2、这里说最终还会是char类型,是因为这里ch+1相当于ch+1赋值给ch变量,判断的还是ch变量,ch变量为char类型, 最终还会是char类型。

3、switch后面括号中可以使用整型、char类型和字符串类型!如下:

http://img1.sycdn.imooc.com//climg/5dc137d1091ca74d12570271.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 qq_粽翎_0 #1
    假如这个ch在上面定义的是int=1,而不是原题的char字符,然后switch后面括号的内容改为ch+'A' 结果会是1+65=66吗?
    2019-11-05 17:04:27
好帮手慕酷酷 2019-11-05 15:08:54

同学你好,你的理解是正确的,其实这里老师所描述的自动转换为char类型的含义就是指,在Java底层中,switch会帮我们自动完成转换的过程,因为switch相当于一个匹配的过程,在Java中规定,switch语句执行的条件判断最终的转换是不会改变类型并且是严格相等,也就是switch中的判断不管中间过程怎样转换,最终还会是char类型,所以会一直进行char类型的比较。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 qq_粽翎_0 #1
    就是switch内部有强制类型转换的意思吗?不过老师说switch语句执行的条件判断最终的转换是不会改变类型并且是严格相等,最终还会是char类型。那这个ch+1为什么强制转换成char类型而不是转换成int型啊? 不是switch后面括号内容跟的是整型和String字符串类型么,那int和char都是整型啊?emmm...不理解
    2019-11-05 16:16:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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