00:00
那接着呢,我们再来看新的这个知识点啊,那么这块的话,我们就从上往下的这个顺序再重新捋一下啊,首先呢,这个Switch后边呢,有一个表达式,这个表达式首先说明的是它不是条件表达式啊哎,前面我们讲的这个所谓的叫条件表达式,就是说你这个里边呢,都一定是一个布尔类型的啊,而我们现在这个表达式呢,非常明确的说,它就不是布尔类型的啊,那么我们要考虑它到底都可以是哪些类型啊,所以这呢,我们要说的啊,Switch这个结构中的这个表达式,这个表达式呢,你运行完以后,它一定是一个某个类型的一个结果了啊,我们说Switch结构中的表达式说只能是如下的,哎,六种数据类型之一,哎,这个呢,而且需要大家记住的啊,这个你也别问为啥了,这就是一个规定,那这六种类型呢,分别是BY型。
01:00
Short类型,Char类型,对int类型,这是四个了,哎,然后呢,还有叫枚举类型,这个没见过啊,哎,还有一个呢,就是死菌类型,诶就这六种类型啊,Be short char in,枚举,还有Li这个枚举类型呢,我们后边呢,讲到这个Java基础的高级部分呢,我们再讲这个枚举类啊呃,这个枚举类呢,它也不是最初就有了,它是在我们JDK诶5.0的时候呢,新增的啊,而上面而下边这个string呢,是更夸张了,String呢是我们这K7.0以后才形增的。7.0以后ya IG呢,就是如果说大家呢,你工作及公司里边,如果JDK用的是六的话啊,呃,你在这个Switch的这个小括号里边呢,哎,你写一个string它都报错,就语法上呢过不去啊,哎,这个换到下一行吧,好,这个呢暂时呢大家先忽略,等后边我们讲到这个枚举类的时候再说,那现在呢,需要大家关注的就是我们在JDK8的环节当中,除了它之外剩下的这些类型才可以呢,写到这个表达式的位置上,那现在呢,咱们用的是一个in的型的,嗯,尤其是你要注意像这个这个这个这个浮电型,包括布尔型啊,严格的是不允许往这个位置放的。
02:31
啊,这个大家要注意这个情况啊嗯,那那那其实就意味着像这样,这个就相当于我们举一下这个错误的这个情况了啊哎,比如说我现在波尔类型叫is handsome啊,这个写成个true这样,然后呢,Switch你把这个is handsome哎我放在这里边,然后呢,你这个kiss一下啊说kiss一个true啊诶这个是个冒号了啊注意是个冒号,这个你写一个啊写一句话,比如说这个我好帅啊是吧?啊诶这个呢,加上一个break,行,再来一个kiss,哎下面来一个这个false。
03:24
哎,这个呢,再来一个比如T,哎,你比如输入有误,我好就可了是吧,嗯,然后下面呢,来一个就是说哎输入有误。输油啊,比如说就这样一下啊好CTRL这个情况呢,你感觉诶是不是看着也挺挺舒服的是吧,实际上呢,我要运行它就报错了,因为我们这个位置呢,不允许放这个bird类型的啊来看一下。
04:01
变异你看这时就挂了,说真的是个false的,哎嗯,啊冒号丢了啊是我也看到有点诡异,因为上一行它都没报是吧,直接蹦到这块了啊CTRLS再来编译,诶这时候你看错了,诶不兼容的类型,说这个波类型不行啊行,这要注意一下这个情况啊,那也就意味着我们这个位置呢,只能是放这几种类型,哎大家要小心一点啊,那么这个死锥型的话呢,我们说是7.0以后呢,大家也可以放了,比如说我们这个课件里边,我这有一个这样的题目啊说呃,这是季节啊,是一个字符串的,然后我就可以把这个string呢放在我们这个Switch当中,哎,意思呢,去匹配啊,春夏秋冬哎,然后你看看诶哪个是跟它能匹配上的,他就进入了执行相应的这个语句了。诶,这个呢比较简单,我就不写了啊,直接把它CTRLC粘过来,诶这个我粘到这个位置吧,CTRLV一下啊。
05:05
哎,CTRLS,哎这呢就定义在字符串嘛,放进去没问题吧,来我们执行一下,嗯,下面这块呢,我得把它注释。哎,C还是。哎,编译哎运行哎夏日炎炎,哎这呢就是因为我们这个summer呢匹配上这个了,哎执行的是他啊,哎还是那句话,如果呢,你要是放在JDK7之前呢,呃,这个版本当中,你去javac的话呢,他就报错了,说这个又是不兼容的类型了,呃但是现在呢,基本上大家去公司当中,呃,一般呢,现在都是用这个气以后的了,哎所以说这个问题呢,就不用担心了啊好,这呢是需要大家记住的这个问题啊,就是关于后边这个表达式的这个情况,然后下面呢,我们这叫kiss啊,这个kiss呢,不是不是这个kiss啊啊不是老师这个kiss kiss了啊是是这个啊哎这个呢里边后边放的是一个常量啊,注意是个常量,你看我们下边这放的都是一些具体的数值。
06:16
啊具体一些数值这个位置是不可以放范围的,言IG意呢,就是我们只是拿的这个表达式的值呢,去依次匹配它们,看看跟哪一个是等等的,对等等的关系,不会说诶我判断一下下边是不是在某个范围里啊等等这种情况是不会出现的啊这个我们再把这个问题也描述一下,这是一个四啊这个case之后啊,只能这个声明,哎这个常量啊哎不能尤其注意啊,哎不能这个声明一个范围,哎这个也是绝对错误的,比如说啊比如说呢,你像这边写一个这样的情况,说我这呢定一个int型的一个呃number这是个十,诶Switch这块呢,把number放进来是一个int型的,也满足,在这呢,来一个case啊说number如果要大于十啊,或者得写个这样吧,写一个这个age吧,Age,十岁是吧?
07:14
AA说A呢,如果大于18啊,说我就成年了。诶这样看这个呢,接着呢加一个这呢,我就直接写一个啊说未成年这样呢也是可以的。来保存一下啊,就是我们这个位置呢,是绝对禁止写范围的啊,保存一下来测试编译,那这就挂了啊,不行啊,其实解释呢也很好解释,咱们的这个位置呢,只是判断,让它跟这个去判断是否等等,我这是一个int型,你这是啥类型。
08:09
尔对,你这布尔类型啊,国印的型怎么能跟布尔型去比较,咱们说了布尔型不能参与这个这个运算是吧,跟我们他的基本其他七个基本数据类型之间是不可以做运算的,哎,不能这样去写啊,哎,所以呢,这个呢,注意也是错误的。啊,其实再换一个角度来讲啊,经常给大家说讲那种,呃,有一个叫什么逆向思维是吧,你就先想假设这样要是可以啊,假设要是假设要是可以的话呢,你说这个是不是长得跟这个也太像了呀,要是Switch case也能这样写,那if file也能这样写,他俩其实那就没必要非得定义两个分支结构了,长得也太像了,我就用一个不就完了吗?对吧?哎,所以就没有必要这样再让这个Switch case再去用这个,哎,比较范围的这个情况了啊,所以这呢也注释掉啊,刚才如下的两种情况都是这个编译不通过啊,行,这是一个,这是一个行,哎这样再写一下这个吧,情况一情况二,好,那接着再往下啊,这个知道放射常量这个冒号呢,记着加上,那下边呢,这里边提到一个break,刚才咱们也讲了它的作用呢,就是跳出循环,那跳出这个Switch case结构的事,但是这里边呢,需要多说一句,就是我们这个break关键字,咱们在一开始演示的时候,我没有加,没有加,你发现编译时候也没有报错啊,呃,然后呢,是出于咱们希望,当你输入的是一的时候,只输出这个结果,所以呢,我们加上break了。
09:58
呃,执行完这个语句以后呢,直接跳出的,呃,想说的情况就是这个break关键字呢,在我们这个Switch case结构当中,它是可选的啊,就是根据大家的实际情况,你看我要不要加,并不是说呢,你要不加这个成语就报错了,这个是不对的啊,就是说break关键字啊,它呢是可选的,根据实际情况,大家来决定你到底该不该加这个break啊。
10:25
嗯,那从经验上来讲,咱们绝大部分的情况呢,都是需要加的。啊,都是需要加的啊,但也有一些特殊情况不需要加,咱们课后有那个练习题啊,讲到这的时候呢,给大家讲一讲啊行,咱们接着接着呢,先往后说,那再往后走呢,就到了这个default了,哎,这是一个六,哎这个default啊default呢就是诶大家呢,就可以把它呢类似的理解为if else当中的else啊,相当于对这个if啊,Else这个结构中的这个else啊,说白了就也是一个备胎啊,当你上面这个都不满足的时候呢,那你就执行我这个结构,那这要一个default就是一个默认值嘛,这个翻译过来就是默认的是吧?哎,你别的都不行,那就执行这个默认的情况就可以了,那这里需要说的就是我们这个default呢,首先跟我们if else中的else呢类似,Else呢是可选的,这个default呢也是。
11:31
哎,Default结构,哎是可选的,哎对我说的这个可选的就有点类似于大家比如说你去呃餐厅点饭点点点东西一样啊,他这不是每一个菜前面都有这个框嘛,就是你可打勾也不可也可以不打勾,这就可选有的那种属于必点的那种,你就可以理解为就是必须要写的那种是吧,可选的就是可以勾也可以不勾,可以写也可以不写,就这种意思啊,就是可选的这一个,它它不光是可选的,而且呢,位置是灵活的,诶这个很神奇啊,什么叫位置是灵活的,比如说看这个事啊,我这儿呢,是把这个底放在写到末尾了,现在我可以把它呢,CTRLX我放到这个开头,甚至你可以放到这个几个不同的case中间啊也行,说这样还可以呢,这样确实可以啊,看着我编译,你看编译。
12:31
点通过了啊,说明没事,让我们运行一下看效果,呃,运行看效果在我们现在这个时候还是一个弯还是一个还是他,那我现在要把它改成五问,这时候你猜这个结果变成多少是吧?啊完了还有别的不。编译运行,那other后边多了个字的话,诶,就这个执行完以后又把它给执行了是吧,那这个过程怎么去理解啊,对这个呢,还是有点意思啊,就这个大家也就听一下就完了啊,咱们平时写肯定不会把这个default写到最开头的,就是进来以后呢,先别考虑default,先还是看这些case。
13:22
哎,Case呢,一个一个匹配都没匹配上,没匹配上呢,那这时候呢,就还是碰到这个DEF这块,哎,那所以呢,把这个other呢就出来了,但是由于other完以后呢,后边你又没有一个break,还就接着往下走,所以把这个zero呢给说出来,诶就仅此而已啊,诶这个你大概听一下就完了,咱们写代码肯定都会把这个一般的默认值呢,都会去写在后面啊,没人会给他写前面。啊,你要是想想想刚才这种,像刚才这种啊,这个我还不能这个撤销了,像刚才这种,你要是非要是写到这块,还希望他不实行介入,那也很好办,对,你就这加一个break就完了嘛,哎,就可以不用再往下走了哈,行,咱们开发中呢,要写也都是写到这儿啊,啊到最后一个末尾的时候呢,你这个break加不加无所谓,呃,因为它已经到最后了啊行,这呢,就咱们说了一下,这个叫default啊,那通过刚才这样的一个解释呢,咱们把这个Switch case结构基本上呢,就算是说清楚了,就是它的一些简单的使用,从上往下每一个结构的特点。
我来说两句