00:00
我们刚才讲了一下Switch的基本使用,现在呢,我们来总结一下Switch的细节讨论,我在这里对Switch语句呢做了五点的细节说明,我们来看第一个Switch语句的这个表达式是一个常量表达式,它必须是一个整形的值,比如像char呀,Short呀,In呀,Long,或者是枚举。不能使字符串,你不能这样写,同学们。比如说说老师,我这个地方要匹配的是这个东西,这个是不可以的。啊,他就直接给你报错,看这是不是提示的很清晰啊,表达式必须为整形常量表达式,也就是说这个地方的这个常量表达式呢,它返回的必须是一个整形的。其他类型不接收,你不能写个字符图案在里面,那有些同学老师,那假如我写一个90可不可以,当然可以。没问题,那也就是说,如果你要传了一个字符进来呢,他就让这个字符和90比相不相等,打个比方,我问大家一个问题,同学们问啊,同学们注意听我这样写会出现一个什么情况?
01:06
我问你一个同学,比如说我把这个。改成97。那么如果我输的是个A,诶同学们,这个单个的字符A是不是前面讲过,它对应的阿斯克玛也是97啊,也就是说你在这方输一个A,其实这个也能匹配上,因为你的A。对应这个整形其实也是97,所以说我们可以试一下。啊,当然这个地方我我我们可以试一试,比如说我输一个90,我输一个A。回车你看是不是还是匹配到他了呀,那这个地方它是怎么做的呢?因为你输了一个A字母进来,你输了一个A字A字A字母进来,那么这个A字母一旦去换成整数的话,其实就是97,它还是匹配上了。明白这意思吧,好,这点请大家注意一下就可以了,好吧,这一点说到这,紧接着呢,我们再来看下面的第二个细节,开始语句中的值必须是常量,不能是变量,什么意思?什么意思呢?就是这个地方你不能这样写。
02:08
打个比方啊,同学们,比如说这个地方是个A吧,是个A你不能这样写,说老师我这样行不行?C2我给他负一个A。负1A这个当然是没问题的,说老师我把这个这个A字母呢,我换成C2。大家看这也是不行的,他说了表达式必须是含有常量值的,也就是说你不能说,你不能让让这个程序说,哦,我这个C2就是这个字,这个A字,A字符不是这样子的,他要求这地方直接写一个常量值,而不是一个变量。虽然你这个变量C2确实是是一个A,但是呢,人家这要求从语法层面呢,要求呢必须是个常量值,因此你不能这样去替换,能理解不?所以这边我们说的第二个细节大家要注意了,就是是case指句必须要常量,而不是变量,第三个default语句是可选的,如果没有匹配case时执行default,但是这个不是必须的。打个比方,同学们看。
03:09
比如说我把这个地方的去掉。我注销了这个代码也没问题。只是出现一个什么情况呢,就说abcd一个都没匹配到的话呢,没有没有任何输出。他也不报错,就这个default语句是可选的。Depot。DAU是可选的,这个能理解哈,我就说到这里,可选的不是必须的,不是必须的。好,说到这,那接着我们再来看下一个break语句,用来在执行完一个case分居后,Case分支跳出Switch语句,是不是刚才已经讲过了,如果你没有写这个break语句呢?会执行下一个case语块,直到遇到一个break语句,或者执行到Switch结尾,这个现象叫穿透,什么意思呢?
04:02
就是刚才老师不是已经讲过这个吗?假如我把这个C这么去掉了,那么C一旦去掉,他如果匹配到这个C过后呢,他把这句话执行了,过后他直接穿透这个。这个K是执行星期四,这个现象我们称之为穿透现象。以后别人问这叫什么现象,你叫穿透就可以了。很形象很形象,如果你这有break语句当然就没问题哈,那break语句那就他就穿透不了了,因为他把今天星期三猴子把学生说完了,一遇到break鱼那就直接从这句话直接喷到这儿来了。能理解好。好的,那假,那假如说这个里面没有语句,这也没有break语句,那就穿透两个,我C把这句话输出了,再输出这个,输出完这个过后呢,再输出这个。它就会穿透。D还会传到这个default能理解不?好,这个细节我就不去测试了,好,这就是我们讲的Switch细节的说明,还是比较简单,还是比较简单,好同学们,关于Switch细节呢,老师就给大家聊到这里。
我来说两句