00:00
行,那关于未运算符呢,咱们就告一段落了,再强调一下,这个未运算符呢,大家刚开始学,不要花时间再去研究它了,哎,咱们讲完了,你下来呢,尽量呢,也就不用刻意去看了,以后呢,我们遇到它的场景的时候呢再说。那最后呢,我们还剩一类运算符,叫做条件运算符,这个命名呢,是从功能上来说的。啊,那么从这个呃,使用的变量的个数呢,我们当时讲运算符的时候也提到过啊说呢可以分成叫一元运算符。二元运算符,三元运算符啊,因为这个三元运算符呢,就它一个啊,所以说呢,我们又习惯上呢,把这个哎条件运算符呢,称为叫三元运算符。比如你在网上你看到一些说,诶三运算符怎么怎么着啊,其实说的就是它,因为就它一个是三元的,那这个运算符的格式呢,是长这样子的一个小括号里边呢,写的叫条件表达式。条件表达式后边呢,我们在写流程控制结构的时候呢,也会有这句话啊,呃,这个词呢,呃,隐含的意思呢,就是布尔类型。
01:03
哎,条件啊真假是吧,这个意思好,那根据它是true还是false来决定我们返回的啊,是表达是一还是表达是二,哎这块你看写的很清楚,如果呢,我们的条件表达式呢是处,那么运算的结果呢,就是表达式一。那如果呢,他要是false呢,它执行的结果呢,就是表达式二,哎,这件就是它的一个主要的特点。哎,就说完了,那剩下的话呢,就是具体的这个练习了啊好,那么回过来,所以说呢,它的这个难度呢不大啊。哎,条件的话我们叫做condition啊,关于它的一个测试。CTRLCCTRLSCTRLV保存一下。好,这块我们写一下这个注释的信息。哎,运算符呢,我们一共讲了有六波,这呢是最后一个。条件啊,运算符它的一个使用。
02:03
啊,第一个啊,就是它具体的一个格式啊,再稍微写一下,这里边呢叫做条件表达式,它呢是一个布尔类型,根据它的真假来决定执行表达式一啊,注意英文格式下的冒号表达式二啊这呢就它的一个整体结构。哎,下边呢是一个说明,哎,说明的第一个点条件表达式是布尔类型的变量,或者呢,是一个表达式运行的结果是布尔类型啊。哎,条件表达式。的这个哎,结果是哎布尔类型。那这是第一个点啊,然后第二点说,哎,如果。哎,条件表达式的结果是处。啊则,哎,我说呢,执行哎表达式一啊,否则。执行表达式二。那那这里边儿的否则呢,其实就是false的意思。好,这个呢就很清楚了,哎,下边呢,我们可以呢,具体的举这个例子了,就。
03:04
行,那举这个例子啊,举这个例子的话呢,其实嗯,也不一定非得要定义变量了,实际上我们就在这块写也行啊,比如这块整一个小画,刚才说呢,二大于一吗?哎,你看这呢,就是一个比较运算符,结果呢就是一个波尔类型了,哎,那如果呢,二要大于一的话呢,我就输出一个哎叫。嗯,我就写个叫表达式一。啊,然后呢,冒号一下,这呢就相当于是两个字符串了。哎,我就写个表达式二。哎,我就这样好,那这呢是表达式一致表示12,这呢是个运算弧,运算弧运算完以后呢,我想赋给一个变量,哎,那么问这个变量得是什么类型的。哎,这个看类型的话,你是看这啊,还是看这啊,还是看这啊。对,看后边是吧。诶,就是相当于呢,我们去执行表达式一,那就相当于我就把这个结果给返回了,哎,那要不呢,就把这个结果返回,显然呢,它俩都是字符串,所以呢,我们前面呢,应该是拿一个字符串来接收。
04:04
啊,比如我们叫一个info这个信息。那你也可以呢,把这个信息呢,打印一下。哎,这个呢叫info啊,保存一下做测试,然后C。哎,Condition。哎,他的一个测试。哎,Condition测试好,这个呢,我们输出的结果呢,就要表达是一啊,因为呢,二大于一呢,结果是一个出。那这样就行了啊,如果呢,我这块呢,改成是个十了。哎,这就是false了,哎,那就执行这个表达式二。编译运行,哎,这就表达是二了。哎,没有问题啊行,那这里边儿呢,想给大家说明的点就是这呢是一个运算符,然后它会有个结果,这个结果的话呢,用什么类型接收,取决于我们这个后边这个表达式一和表达式二呢,它的这个变量的类型。那么我们刚才这道题目当中,这两类类型呢,是一样的哈,哎,都是string类型,那也有可能是不一样的。
05:02
啊,你比如说我再写一个啊,二大于一,哎,这个来一个问号。哎,那后边的话呢,我这这样写啊,我这写个一,我这冒号写一个2.0。是这样,可不可以呢?其实是可以的。对是可以的,那可以的话呢,我们就要考虑说,那前面应该用什么类型的变量来接收了。对,这时候呢,得用double。诶,比如我用个第一来接收啊,我说这个第一你不形象,我们来个叫result啊,好,那么这个有可能我们结果是一。哎,那一呢,付给大部的话呢,那就自动类型提升一下。啊,那也有可能是2.0,那二零付给double呢,也是可以可以的,也就是说呢,我们这两个变量的这个类型呢,要么是相同的啊,要么呢,不相同也行,但是它必须得是。咱叫什么呀,叫兼容的吧。是吧,才可以啊行,那这时候我们看一下这个结果。啊。Result就是结果的意思。
06:01
编译运行,哎,这个结果你看就是1.0,这一定要小心,这个结果不是一啊,哎,是1.0。好,通过这个呢,我们想说明的点哈,第三个就是表达式一和表达式二呢,需要是同种类型的啊,或者呢是兼容的类型。啊和02:12。啊,需要。哎,是相同的类型或呢是诶能兼容的类型。哎,这样呢,大家去体会一下就可以了啊。行,那这块呢,就基本上语法上呢,也就这样了啊,就这样了啊呃,那么通过这个呢,其实大家也稍微的能够感受到呢,似乎有点这种分支的意思了。说你要是处呢,我们就这么着,你要是false呢,我们就这么着,诶好像呢,跟我们前面呢讲过这个,比如像if else啊等等的,似乎是有点儿这个。相类似的这样的一个逻辑一样啊这个找呃在在这儿呢是吧,呃有点这样的一个意思了,哎,等一下咱们再去说,诶他们之间的这样一种关系啊,那说这个关系之前呢,咱们再做两个练习。
07:08
哎,那么这个练习一呢,我们说那叫获取两个整数的较大值。哎,看看这个需求。好,我这呢有一个M,这个值呢是十,有一个N呢,这个值呢,假设是20啊哎,现在呢,我想获取它俩中的较大值,写成一个通用的一个方式。那怎么弄?哎,你就判断M大于N吗?如果要是M大于N是处的话呢,我就把M输出,否则。就嗯。哪是相等的?对,无所谓了,就是吧,相等的话,你给M给N不都行吗?哎,在我们这个题目当中,相等的话呢,其实就把N给返回的是吧,好,这时候我们就接收为比如叫max。啊,较大值。哎,这个我们输出啊叫较大值为,哎,加上一个max保存搞定啊。
08:05
哎,这不就可以吗?这个比较清楚是吧。哎,可以了,行,这呢是我们这个练习一好,那么练习二啊,获取三个数的最大值。三个数。啊,Int一个I等于,哎,随便写啊一个接。等于啊,一个K等于。啊,这就随便整个仨数啊,哎,他们仨中的最大值怎么整?啊,先找。俩的是吧。对,就跟说这仨人比身高一样啊,说这仨谁高啊。你说那那我就一看就出来了是吧。那那咱再换一个场景,呃,说这三个人呢,看谁的力量大,掰手腕是吧。那你看不出来。啊,那怎么办呢?诶,你俩先掰一下是吧,哎,掰完之后获胜的呢,是不是再跟这个掰一下。
09:04
哎,有同学说那不行,咱得来个积分制啊,是吧,那你不用那么复杂了,就是吧,诶那因为比赛的话,你有可能说,诶这场他赢了,下场可能他就输了,但是这个数的话,你比一次那就出来了,不用再去循环比啊。好,那所以这块呢,我们就先找到其中两个数中的较大值,上面已经做过这样这样的需求了,所以我们这个经验已经有了啊,如果呢,I呢大于接,这是I,这是接。这个呢,是我们临时呢,算出来的一个最大值。哎,我这就叫tap了,Tap就临时的意思,哎,大家以后也可以这样去写。哎,然后呢,你看我这还遵循标志符的命名规范啊,这呢是个小驼峰变量嘛。好,然后呢,我们再拿着这个临时的这个值呢,再去跟K做比较。哎,把它换一下啊,哎,那如果说呢是处,那就说明你这个数大,否则那就是K大。这个呢,就是我们最终的这个最大值了。这个最终的呢,哎,我们用final来表示一下啊。
10:02
就这样写。哎,这个你注意你别写成final,这个final看是绿色的啊,蓝色的。这以后咱们要讲那个关键字啊,你你再加点别的东西。Final最终的意思就是最终的最大值啊。当然了,这个变量名你写个这叫A,这叫B也行,当然咱们不是尽量见明知意嘛。啊,我得给大家起个表率作用是吧。啊编译运行好,那么最终的这个最大值呢是30,那具体过程呢,就这俩比完之后呢,把30呢就取出来了,30呢,再跟这个23比30大,所以30就是最终的最大值。哎,就是这样的过程啊,哎,那么哎就写完了啊,那么有没有同学呢,试图想把这两行给它合一起呢?也未尝不可是吧?怎么弄呢?你看。这是咱们最终核心的这个操作是吧,我这写个一吧。哎,这个里边的它是不确定的哈。
11:03
哎,那但是它呢,是不是通过这个式子算出来的呀。那我就把它注意啊,CTRLC我往这一放,但是呢,又怕这个优先级有问题,我加个小括号。这个呢也同样的换成个小括号,然后你把这个式子给它扔过来。就行了是吧。我们看一下这个结果啊。哎,保存。诶编译看过了啊,说明没问题啊走啊还是30但是。但是你能看懂吗?虽然是你刚才自己咱自己写的,咱写完之后,咱自己再看他的时候呢,都觉得这谁写的代码。是吧,诶所以咱们就别这样去弄了啊,看着好像挺好,你看你也就是把这两行换成一行了,但是从执行效率上来讲呢。没有省是吧。甚至我说呀,可能还慢了点儿呢。你比如说我们这个跟他做比较的时候呢,你算过一次。
12:02
假设那是处,你是不是又得再算一次?对,而我们上面就算了一次了是吧。啊,虽然说上面多啊,似乎用了一个空间,但是这都是小事啊,呃,这个呢,可读性很差。可读性的好坏其实挺重要的。大家注意啊,以后呢,我们在开发当中,哎,我们有好多去衡量这个代码好坏,比如说性能高低呀,可扩展性好坏呀,你是不是解耦了呀,啊,其实还有一个很重要的指标,你可读性强不强啊,这个代码你写的。哎,没问题,然后你要离职了,这个代码呢,要交给另外一个人去接手啊,你要是可动性高的话呢,可能一周他就接手可以去做了,结果呢,呃,接手的这个人,你这个代码写的呢,实在是。有点差是吧,看了一个月也没看明白,那对于公司来讲呢,这不也是损失嘛,是吧,你要说你整你整的是挺好,那你对公司来讲,那这个危险系数就挺高的呀,是吧?或者再换句话说,你自己写代码可读性你自己看也未必就一定很高,你后边再去看的话呢,你可能你也看不太明白啊。
13:05
呃,以后呢,我们讲方法,呃一个方法一个功能,你写的这个呃叫耦合度低一点啊,那以前呢,也有同学说这呃看公司接受这个代码跟我吐槽啊,说写的实在是太差劲了,一个方法里边写了900行代码。写到一个里边了,都感觉要哭了,都是吧,哎,其实呢,你是可以拆成一个一个的小功能的,然后合并在一起的啊。啊,你要是后边自己去改自己的,自己也想哭是吧?OK,行,这个呢,就是我们说的这个算是一个合并以后的这个写法啊,但是呢,不建议啊,不推荐。好了,这个呢,就是我们说的这样的两个小的练习啊,就告一段落了,哎,那对应的就是我们课后的这两个案例啊,就说清楚了,好,下边这块呢,还有一个题目啊,咱把这个题目呢,可以写一下啊。这个题目呢,咱们专门写成一个新的吧。Condition的一个练习。
14:05
啊,就他啊。CTRLCCTRLSCTRLV保存。看一下说今天呢是周二,十天以后呢是周几。哎,你输出一下这个信息。这个咋弄?今天是周二,这个咱们来一个叫,比如说叫week吧,今天是礼拜二是吧。十天以后是周几,这个咋弄呢?啊。嗯,这个呢,稍微的有点感觉搞不定了哈,如果啊,大家你觉得这个题目搞不定,包括以后我们讲这个流程控制的时候,还有好的问题,你也不一定能搞得定,诶这时候你要分清楚一个逻辑,就是你不会写,可能有两方面的原因,第一方面呢,没有诶熟悉相关的这个知识点。呃,还有一个原因呢,有可能你就是不太懂这种逻辑了是吧,这个你要区分清楚,呃,就是你要是这个语法上不懂,比如说这里边用到了三运算除啊,用到了这个加减乘除啊,这个你就是不会,那你这块呢,是肯定要好好学的是吧,把这个知识点看一看,但如果说这个知识点呢,你都很很熟,我就是写不出来,这个你也不用着急。
15:17
就是每个人的逻辑不一样,那有的人家都学,大家都学了十几年的数学了,是吧,那也有好的,也有坏的,这个逻辑的能力呢,你得一点点去沉淀了,不管以前的底子什么样,现在呢,你能做到事儿呢,就是见到一个新的题目呢,你就把它搞定就完了,再见到新的你就搞定完了啊,再见到又不会不会心态放平和一点。啊,你做过的题你家可能不会呢,你何况你没做过的是吧。哎,这个注意啊,哎有两种原因造成的,这种原因是要注是要你。重点关注的啊,不能知识点有漏洞啊,但是这个逻辑这个事儿呢,就是一点点积累。首先呢,这里边儿提到说十天以后筹集,那你不行你就换一个,比如七天以后筹集。七点以后肯定是周二是吧,对,那七点以后其实相当于呢,我们首先呢,哎,我就可以考虑让二加上个七是吧,变成九九呢。
16:09
对,我取模一下七不就还是二嘛,所以就七点以后还是周二,那我不用七,我换成十是不是一样的道理。哎,所以我首先呢,让它呢,是不是加上一个十啊。那我就用注意加等于了。哎,前面我都讲过吗。啊加等于十,然后呢,我再让他去取余是吧。或者要取模了啊,取模以后呢,我把这个结果不防我就还给这个魏克了。嗯,当然,你说我再新定一个变量也行,只不过没必要嘛。700。是不是写完了?好,那么写完这个结果呢,这个余数是几?哎,是不是就应该是几,比如说三,那就是周三。哎,所以这块呢,你看我就想这样去输出来啊,CTRLC在这啊。哎,在这,哎这么着说,今天是周,注意这个呢得啊,左右两边拆分开,中间整一对加号你看。
17:08
是不是这样我再写一遍啊?今天是周,是不是让你写个东西吗?二那个二不能写死,应该是这个变量的值,我把这个去掉。哎,把这个左右两边这个字符串呢,给它拆开,中间呢补一个变量。那这个变量就是V克嘛。不对。对,我把它给啊,对,这个还真得写死了。因为这个呢,我是用的week,这已经把它给给改了是吧。那要不你新定一个变量啊,把这新定变量,这还用它,要不这块那就写死吧。本来想这个表演一下呢,结果不行是吧,诶赶回去啊,诶今天是周二,诶十天以后是周。是吧?好了,感觉上没啥问题,来跑一下。Java c。
18:00
A condition。啊,练习。哎,走起,哎,今天是周20点以后呢,是周五。啊,你想七天以后是周二,你再加三天不就周五吗?诶没啥问题,哎,那你再想想这个题。有没有可能性会有问题是吧?今天要是周四周三。这个周三了啊,我这个就是周三,那十天以后呢,是不是周六啊。今天周四呢。十天以后呢,就应该是周日了是吧,那你这儿呢。是周玲是吧。哎,所以说呢,我们在写程序的时候呢,诶你可能也是,诶没啥问题啊,你想的要全面一点,是不是有可能有一些特殊情况啊。这个里边特殊情况就是零。哎,周123456都没问题,就是这个零不行啊。怎么弄?
19:02
我得判断一下这个V和它,如果要是零的话呢,我就用那个日去替代是吧。对,所以这块我们就诶考虑用个三一上浮了。这么着啊说呢,如果你这个week。他要是等等于零。马是吧,哎这样,哎,如果你要是零的话呢,我就用。这个日去替代,否则呢。诶诶,否则呢,我就还用这个week呢去表示。哎,这样,哎把它呢,直接的就编译了。编译错了是吧。我看我这哪写错了。说这个。嗯,尺寸呢,无法转换成布尔类型。此阵无法转让啊,这块呢,我们得给他呢。包一下。是吧?哎,保存啊。嗯,B,哎,可以了,然后运行,诶十天以后呢,是周五,那这个你要改成是这个。诶,我在这儿改是吧,为呢改成是四是吧。
20:05
那这个呢,你也改一下啊,这个是四诶十点以后,这不周日吗。哎,就可以了啊,行,我把这个就注释掉了。行,这个题目呢,我们就写完了,当然呢,要呃,稍微再唠两句哈,有同学可能会说,诶,刚才我们不是讲过说这个表达式一跟表达式不得是类型兼容吗?似乎你这会儿看好像不太兼容,哎,这是因为我们也没有给它附一个变量嘛。呃,前面呢,这是字符串,字符串可以拼接呢,常见的这个类型都没问题啊。就行啊。好,那么关于这个条件运算符啊,基本的知识点,咱们这就说完了。然后呢,我们再回到刚才提到的那会儿,抛出来一个点啊说呢它呢也有点儿这个分支的意思了,那我们紧接着讲完预算符之后呢,我们要讲这个流程控制了,那就会提到这个if else。If else呢就是分支的这种结构了,那这呢,我们把这个结论呢先抛出来啊,这个结论是什么呢。说呢哎,条件表达条件运算符,那有这种分支的这种场景了,诶后续呢,我们讲分支呢,都会讲分支结构。
21:07
啊,那么结论就是结论什么呢?就是凡是可以使用条件运算符的位置。都可以改写成if else结构。啊,凡是可以这样说吧,开发中。凡是可以使用条件运算符的这个位置都可以改写为。哎,这个if else结构啊,虽然咱们还没讲,咱们先把这个结论抛出来,那么反之。啊,能使用。If else这个结构呢,不一定。能改写为。啊,这个呃,条件运算符或者说呢,多数情况下都不能改是吧,你想它就只是一个运算符,它这个没有那么复杂的逻辑的,哎,那你if else的话,你可以写的非常的复杂啊,If里边像我们前面讲到这块的时候啊,你这里边儿呢,可以写上几百行代码。
22:07
啊,但是你这个结构呢,这块呢,就不能那么复杂了,就是个运算符呢,你不可能处理的很复杂了,就啊所以说这个反之的话呢,相当于就不成立了。啊,这个注意啊,那如果我们要画一个图的话呢,呃,是不是可以这样去画啊,哎,这个呢叫条件运算符。诶,然后呢,这个呢叫if else是吧,诶你能用条件运算符的,就相当于是你都能够涵盖在我们if else使用场景当中,但是反之的话呢,能用它的不一定能用它。哎,你要这样说的话呢,可能有同学就会说了,说要是这样的话呢,我干脆就。从来也不用它了。反正你能用它的都能用,Else能用呢,不能用它,那我就以后就只用它了,可以吗。可以。可以完全没问题啊,但是是吧。诶,但是的话呢,你要是两个都能用的话呢,建议你呢,还是要用它啊,因为。
23:05
对不是说因为说Java都给你提供了,你你你给人家点面子用一用是吧,诶不是的啊呃,因为呢,他俩呢,在都能使用的情况下呢,它的效率呢,还是稍微要高一点的,但是这个高的呢,其实也不是特别明显,需要经过我们呃重复性的,比如说多做运算,我们测试出来发现它确实要高一点。OK啊行,我把这个事儿呢也写一下啊。首先呢,是我们说这个事儿啊,反正不成立啊,那么我们下一说啊,在。啊,建议啊。在二者都能使用的情况下,推荐使用,哎,条件运算符,因为呢执行效率稍高。啊,这块其实就涉及到,呃,什么原因呢,就是涉及到底层这个CPU一个执行指令的问题了,啊这呢,它毕竟就是一个运算符嘛,你想。啊,所以说呢,它这个指令的话呢,是非常的紧凑的啊,所以运算速度呢就比较快,而我们对于if file的话呢,它相当于是一个具体的一个流程控制结构啊,这个结构的话呢,它呃根据这个结果呢,来判断是这个指令或者这个指令它再去呃西湖呢,去加载相应的指令,它就要稍微的慢一些。
24:11
啊,所以呢,咱们就诶推荐呢,都能用的时候呢,就用它,当然了,实际情况就会发现,有的同学呢,可能根本也想不起来用。稍高吗?想不起来就想不起来了啊,你别把其他的有的代码写的效率太差就行是吧,你说你这呢写的特别高,然后有的地方写的差,早把这个效率高的都冲了都是吧。啊行,这个呢,就是我们说的这样一个结论啊,然后呢,至于说呢,把呃这个获取两个数的较大值改写成if,这个咱们因为还没讲,所以我就不去改了啊,这个我们讲到后边的时候呢,大家也就清楚了,这样呢是我呃写了一个改的代码放到笔记里边了啊,有兴趣呢就看一下。好,那么关于这个条件运算符就结束了啊,哎,比较简单,哎最后的话呢,我们在说两句,所有的运算符都讲完了,哎,那么这儿呢,就涉及到运算符的优先级,哎,那我们在实际的写一些操作的时候呢,有可能里边就会融合很多的运算符。
25:07
包括呢,像我们上边。诶,上边讲这个前面这个知识点的时候呢,这不是有一个这个吗。这个是吧,诶你看这个呢,也涉及到有好多运算符,那么这么多种运算符放在一起,我到底是先考虑这个,先考虑这个,还是先考虑这个还是,呃,怎么着呢,是吧,这个时候呢,就涉及到优先级的问题,这儿呢我放了一个表格,这个表格呢,就罗列出来了我们常见的运算符的优先级,诶这个优先级越高的,它就越先去做运算。啊,但是啊,你看一眼就行。那以后呢,你也不用再去看了。因为呢,谁也记不住,我也记不住啊,诶大家呢,在开发当中,呃,首先呢,就是如果你要是写的很复杂的话啊,建议呢,不要放到一行。这个就懵了哈,你自己也hold不住,哎,你就把它拆开,分成好几步来去写。
26:00
啊这样,但是你说我我我就想这样去处理,那行不行呢?诶你要是不确定谁优先级高,那你就把它用小括号括起来,小括号里边的优先级就会比较高。诶就可以了啊呃,那么在实际的笔试当中呢,可能会出一些变态的题,把它混到一起去考察,你这个呢,你注意啊,笔试的时候呢,你如果这个题答错了,答错就答错了。也没啥大的这个事儿是吧,你说我考了95,我要这个错了,我就90分了,差那五分呢,不影响你的这个实际的这个录取与否啊,这都是比较小的问题了啊,因为任何一个成员,即使老成员呢,也有可能你让他写,他肯定是写不出来的。但是呢,他可能会判断正确。啊,那这里边儿的点在哪呢?基本上啊,就是说大家你觉得谁先执行,那差不多跟你觉得那个就差不多。能能理解这些事儿是吧,你像我们刚才做的这个逻辑的哈。就是你看到这个时候呢,你觉得是他先判断这个呢,还是先判断这个呢。
27:05
你要觉得先判断这个呢,那我就不知道怎么给你扭了是吧?诶诶,那其实应该就是先看这个,再看这个,然后整体上看这个是吧。对,就是你觉得这个事儿基本上就是对的。就可以了。啊就OK啊,行,这就完了啊,最终的结论呢,就是这个事儿,哎,你要是非要用,你就用小括号。哎,然后呢,建议呢分布写。哎,笔试当中可能和你放在一起,一起恶心,你恶心一下你就恶心一下得了,错了,错了就错了。也没啥大事啊,平时开发的,开发时候的,写的时候你可别跟笔试一样,那样去弄,错了就错了,那就麻烦了。啊,就可以。好,那我们就整个告一段落。
我来说两句