00:00
来看一下我们今天这五道问题,诶这个呢,考察的就是我们昨天讲的这个流程控制啊,诶其实考察这问题呢,比较比较基本了啊,就是需要大家都应该能掌握的,主要呢,就是大家还得习惯一下Java的写这个流程控制的这个相关结构啊,是什么样子的啊行,这个我们CTRLC一下,把这个题目呢,咱们放到这个一个TST当中啊,因为涉及到这个代码了,行首先呢,第一个问题啊,这一个描述性的啊,这个大家都得清楚,诶Switch呢,后边有个小括号啊,写的是一个表达式,这个表达式呢,只能限制几种特定的数据类型啊,一共是几种啊这六种啊,这个其实记的话呢,也稍微有点特这个特点啊,咱们写一写,跟大家说一说,从从这个从小到大这个顺序吧,先有几个是吧,哎short哎,然后诶对啊还有诶对。
01:00
枚举类型的,哎,枚举类型啊,其实也是一个变量啊,枚举类型的一个变量,哎,然后或者是词缀类型,诶对就这几种,那这个呢,你说不说是JDK几加的都无所谓了啊呃,这个实际上是JDK5是吧,诶加的啊,然后这个是JDK7的时候,诶加进来的啊,就是七的时候呢,就可以用它了,行嗯,前面这几个呢,其实大家记的时候呢,呃,也有小的特点啊,这不就是咱们讲那个,嗯,这个基本数据类型变量自动平行提升的时候呢,前几个嘛,是吧?诶对啊就可以行,这个得清楚啊,要不的话呢,你这个Switch case回头用的时候呢,什么类型都想往里塞,结果一塞错了,你得知道为啥错啊。诶第二道题呢,这个眼熟不眼熟,这是咱们课后的那一道题嘛,诶,昨天咱们说这个相对比较简单一些,就没有带着大家去写了啊呃,这个出这个题的目的呢,就是大家呢,呃,得是会去写这。
02:00
这个Switch case啊,就整体的这个结构啊得清楚,哎这里边呢填一个变量啊,然后这里边呢来写这个case,哎在这个题目当中呢,哎,你这俩,嗯这俩变量呢,CTRLC,哎这不是还都保留,哎,这也都保留哎然后呢,下边你会发现是根据这个A的值径行判断的,所以就把A呢放到这,哎咱们这个case这块呢,只能是写常量啊,所以呢就是依次让我们这个变量哎去匹配这里边的哎123还有其他的哎所以只能写这样的值,诶里边这个运算呢,就相当于是我们的这个执行语句一样啊然后这块呢,相应的加上这个一定要记着啊,看一下有没有加这个break串的时候啊,Break不加那就坏事了,哎,这是这个,然后呢break一下,哎K4,然后三哎X哎加等于16。
03:00
哎,Break一下,哎,最后呢叫default对default X加等于34,诶诶最后这个break呢,对加不加就都可以了,对,因为它反正是最后一个了啊行,嗯,这呢就是咱们说的这个结构啊,主要呢,还是希望大家去熟悉一下这个Switch case怎么去写啊,就写的时候呢,这个别丢个分号啊,丢个冒号啊,少一个break呀,大括号丢了呀,哎这些问题呢,就别出现啊,基本的考察这个结构的是。行,下边第三个问题找同学来说一说,说谈谈呢,你对三运算符if else和Switch case这个结构啊,使用场景的一个理解啊,就这三个结构呢,哎,我们说啊,为什么放在一起比。哎,因为他们都有点这个分支的这个意思是吧,哎,就我们在使用的时候呢,你看看到底你该怎么去选择啊,谁的使用范围大等等这样的这个问题啊,行,这个找个同学来说一说,你看李宝你说说吧,三个都使用一分之结构,嗯都嗯,单元运算符和位配结构都能转化为file,呃,这两个结构都可以转换成对,然后反之不成立,反之呢,就是用if转成三元,或者是if转成three都不成立,对然后那个三元。
04:33
我一般就是都适用于这两个什优先选择那个三权和那个30K啊,所以呃,就是如果这个三种情况都可以用的时候,其实准确咱们当时讲是这两个讲过,然后这两个讲过是吧?对,就凡是呢,能够考虑使用三元的或者是Switch case的,咱们优先的选择用他俩,呃,就是最后呢,没有招了,或者说没有其他的这个不能用他俩了,我们再选择用它是吧?原因是什么呀?效率更高,对三元呢,或者sweet kiss呢,执行效率稍微要高一些,嗯,行,还有吗?
05:07
没了,嗯,行,那基本上也都说清楚了是吧?嗯,就是说三元也好,Sweet case也好,这个凡是用三元和sweet case的都可以写成E啊,这个不用这个担心了,就肯定是都可以写的,反正呢说不成立,不是说呃用E的说一定不能够改成三元,不是这意思啊,是说呢,呃使用他写的不一定可以改成三元,或者说呢,不一定可以改成四维Case啊有能改的有不能改的是这个意思啊行后边呢,这个说的都没有问题了啊就整个呢,就是我们这个大家呢,写代码的时候,一般呢,咱们涉及到分支的时候呢,通常哈,就是一上来脑子第一反应E啊没毛病是吧?哎,就是你写着写的时候你适当想一想,诶是不是呢,满足这样的几种数据类型,那同时呢,这个取值的范围呢,还不多,就这么三四种,通常也就三四种,它多了五六种啊,肯定不会说超过十种,你还用4SWITCH case的了哈,呃,就是这个情况呢,不太多。
06:07
这时候呢,你可以选择用three case对三元的话呢,这个比较简单哈,它就是一个运算符了,那那就只能是一个相当于二选一了啊,就是表达式一啊表达式二那是二选一的比较简单的这种情况只是一个运算的,哎大家呢可以用三元啊行呃,另外的话呢,这个用三元也不是说哎能用这个用三元觉得就就就很高大上了哈,比如说呃,说这个事吧,你看啊嗯,我要写就是前面呢定义了两个变量有A啊有这个B是吧,这个变量我就不说了,这呢说如果要是A,比如说不等于B啊这个时候呢,我下边我就s out,我简起了啊就输出一下A啊else它俩要是相等的话呢。哎,我就输出一下B,哎这个呢,看着写的挺好的是吧,像这个代码的话,我们说就可以给它改写成用三元了来说,A呢,看看它是否等于B,哎,A呢,如果要是等,呃不等于B是吧,A要不等于B满足的话呢,我就这个返回A,否则呢我就返回B,这呢前面咱们可以拿一个,比如说一个变量C去接收一下,哎或者这个上面这个咱们输出了啊,你也可以前面定一个C,这个C呢在这里边呢,让这个就是跟这个下边的效果一样的话呢,C赋值为A,哎这呢就是C呢复值为B,这个能看懂吧,就是你要这种写法跟这个比的话,是不是显然这个三元这个要简洁效率高一些是吧,但是这个这种情况就一定是最好的嘛。
07:49
你看A不等于B的时候,我输出的是A是吧,等于B的时候呢,输出是B,那么就相当于这个C复值不就是A吗?想想是不,A不等于B的时候,输出AA等于B的输出B,那B不是还是A吗?就跟说这呢,比如说是这个这个你你你你媳妇的观点或者女朋友的观点,这个呢,是你的观点啊,你俩协商一致了说啊,当咱俩观点不一样的时候呢,呃,听你媳妇儿了,当你俩观点一样的时候呢,听你的看似挺公平的是吧,那不就是听媳妇的嘛啊那直接就A了就啊所以写代码的时候呢,就是有的时候多想一想,就是别这个整了半天,最后一看哟,这不就是直接一个赋值嘛,是吧,写的还挺复杂的啊,你看这个结构,这不相当于直接就就就这么着呗啊,多想一想啊。
08:50
行,然后呢,第四题说如何从控制台获取string和in型的变量,这个我们使用什么结构啊,对scanner啊,诶scanner使用的话呢,我们主要呢讲了三步,第一步打包对吧,怎么写啊,这个import java.YouTube.scantter对啊,诶这个呢,我们写在这个类的声明的上面啊,第二步叫做实例化,相当于就是这其实是咱们后边讲的面向对象了啊,咱们给大家创建一个对象,其实是就这样呗,哎,别忘了这个小框里的这个别丢了这个啊呃,这个呢,大家就目前呢先当成一个固定格式来写啊,其实从这个语法上咱们也能讲清楚,这就是一个变量啊,这是变量的类型,变量的名,哎,右边呢就是变量的值。
09:48
只不过对于这个类来讲的话呢,它这个变量值呢,得通过new的方式来创建而已,对去提供而已啊行第三步我想获取string这样了一个方法next了,嗯,对,这个呢,就达到拿到这个string了,哎,这个叫iner,比如说啊嗯,我想拿这个int呢,就next int呗,嗯,Int比如拿一个ID是吧,就可以啊行这个昨天咱们把这个scanner这个说的还相对比较清楚一些啊,比较细致一些,就是我们可以获取的类型其实还挺多的啊,就哪一种说不能直接通过next来获取啊,对,差就千万别出出出这个出笑话了啊,说next差一下是不没有这个方法啊,哎,对,这个别写错了啊,行,就没有这个差哎。
10:49
其他的几个基本数据类型,包括string啊都有啊,都可以用,OK,这就过了啊,嗯,使用for循环便利100以内的基数,这是咱们考察这个for循环的啊,并且计算所有奇数的和呃,在输出啊,咱昨天写的那个例题是计算偶数的是吧?对奇数呢,是不是类似啊,就从一开始小于等于100呗,加加呗,这样哎,在里边呢,你判断一下说如果呢,I呢,曲目二呢?
11:21
怎么着,哎不等于零呗,哎这样呢,你就在这我简写了啊,哎,S out一下这个哎哎就可以了,同时呢,他还让你去计算这个基数的和那一个sum是吧,大家看这样写行不?我这sum这样没负值啊,然后在这个位置上说这个萨加等于哎行不?他就说可以的,这样我要运行,那就是后边是不是还缺一个输出是吧,上一下这样我要输出的话会编译报错不有有有确定的,我说的这个肯定会怎么着会报不会,为什么,哎,对的啊,大家说的是对的啊,这个汇报的。
12:13
汇报的啊,就是我们这个sum,咱们前面讲变量的时候说过,变量在使用之前一定得赋过值是吧,你这呢,这个算使用了,就是你要说你要说这样,你看这样是不是可以,咱们考虑不考虑这道题了,就考虑这个语法上啊,这样写OK,不这样写其实有风险啊,有风险就是说你这个衣服要进不去的话,你这块输出了是不是不行是吧,当然你要是这个,比如说我要是这这一说说的就就多了啊,咱们只是说这个抛开这道题说一下这个变量的这个问题啊,呃,这个假设跟他没关系,我觉得这一这写个二法,像这种情况呢,我们要编译是可以过的。
13:01
啊,因为呢,你在这个for里边的时候,哎,这样其实也这样,其实也有风险,他可能1FOR也进不去,这说说多了啊。啊,就是大家呢,你决定行不行呢,其实就就掌握一个标准吧,就是运行呢,编译的时候你看过不过,编译过了那就过了,编译不过那就回来改是吧,这肯定错不了啊,这个为什么说有时候过有时候不过呢?就是你像我们这样写法,哎,我这写定义了一个变量下面呢,相当于在用嘛,你必须在这个C之前,是不是得想办法给我这个项目过值啊,对啊,就是只要能保证你这个代码肯定是能够过值的,他这个就不给你报错啊,比如我这要没有这个for,没有这个for的话呢,你不就是一个if啊,你会发现不管是走if还是走else都给sum负过值,这个呢就一定不会报错了,嗯,你要是像这种,比如我们加了一个for循环,那是有可能说进不去for的,你要有可能进不去for了,这个呢,它就会。
14:06
没有符合值嘛,就出问题了是吧?哎,但是咱们这道题目呢,是这样子的啊,把这个删掉,这个改成呢叫加等于I,嗯,那这个那就更是了,你是在原有的sum的基础值上加了个I,那原有萨你是几啊,没负过值,所以这肯定是不对的是吧?那给他赋一个值啊才可以,哎,这样写就可以了,行,这个还有问题不大家。就是我刚才说的那个,那个就是赋值的这个事大家能理解不测试一下吧,这个一说的话呢,可能可能有点懵哈,诶这呢其实还是一个挺重要的一个问题,但是就是我刚才说那个结论啊,你就自己写的时候呢,你看它编译过了,那就没事,编译不过啊,说你没有复制,那你回来给人家附上值啊,就拿这个为一个考察标准就行,先建一个文件,这个咱们看成是一个复习啊,啊并上我们。
15:12
好,Plus VIVO的一个test。这我非常色。资料不中,就在于专。那比如说把咱们刚才说的这个代码呢,诶这我粘过来啊,这个位置呢,我就给大家写全了的,那这个咱们写一个I啊。CTRLC一下sum来保存一下,行,你看现在呢,我把这个sum这个等于零,这个事呢,我给大干掉啊,CTRLS一下,这个时候呢,诶我们去执行一下,看CMD,针对于我们这个代码加c review test点好看这时候编译就报错了,嗯,说一个是这个位置啊,我们在原有的萨姆的基础上呢,加上个I,原有的萨是几啊,没负过值,所以就报错了啊这块呢也是一样,嗯,这输出的时候呢,萨姆可能在这里边根本就没进去过if附啊,那你也没有值,所以呢这也报错,这个比如说抛开这道题,我们改成个这个赋值了啊,赋值以后靠不靠谱,CRLS编译照样错啊。
16:42
对吧,哎,你比如说哪怕你把这加一个else sum赋值,我就写死一个数吧,写死个一愿意,你还是说能理解不,这就是刚才我解释的那个事,为什么这时候还不好说,可能未被初始化,对你是不是可能进不去这个for啊?
17:07
咱们说这个for的话呢,先有个初始化条件,然后接着呢,你是不是得紧接着去判断一下是不是满足这个循环条件呀,有可能我们第一步完了以后,第二步一判断是不是直接进不去就退出这个循环了呀,如果要是这样子的话呢,你这个sum在这块输出不就可能没有负过值吗?对吧,这个有点难度啊,大家呢,细微的体会一下这个问题,就是遵循咱们最初的书的那个原则,就是变量在使用之前一定要赋过值,那因为你这个for呢,我可能就进不去了,进而的话呢,我就进不到你这个file里了,所以呢,你这个sum是有可能没有赋值的,那进而的话呢,这块就报错了啊,那再变,我要是把这个for这块呢注释了,把这块注释了,嗯,那你这个没有I了,我这个就就改一下啊,比如说我们就呃指定一个吧,比如说四啊,就这呢,这不也算是一个波尔形的条件啊,我这么着这个也得注释它。
18:11
像这个我要是去编译的话呢,能过吗?啊这IE得改一下是吧,我这改成一,这改成二吧,这个能过吗。这个可以么?能过,为什么过了是不是不管你是走if还是走S,肯定这里你都写了,肯定会执行一个你的sum肯定会被复值,所以这个位置呢,就不会出现说未被初始化了。嗯,体会一下啊行,这个我们关于这个今天的这几道问题呢,咱们就说到这儿,刚才说的这个点呢,这个稍微有点深。
我来说两句