00:00
那运算符呢,我们还差最后一个啊,就叫三运算符,那这一组的话呢,其实就他自己啊,也就是说这就只有一个了,那这是它的一个格式,这也是我们这运算符里边最复杂的一个,哎,大家看一下,嗯,这呢一个小括号,小括号里边呢,叫做条件表达式。啊,就是它可能是一个表达式一个运算啊,总之呢,这个运算的结果呢,必须是一个布尔类型的,根据这个布尔类型的值啊,如果你要是一个处,我们就让它执行表达式一。啊,如果你要是false呢,就让它呢,直行表达式二。哎,这就是我们这个叫三元运算符,实际上呢,比较简单啊,来我们说一下。新建一个啊,那这呢,我得起一个类名三元。Three。不能这样写了是吧,我就写个三元吧,这样啊。CTRLCCTRLSCTRLV一下。
01:13
哎,运算符之六。三元运算。哎,三运算符或者呢,也叫做三目运算符啊,这个元呢,其实就理解成变量的意思了,那三元呢,就意味着是有三个变量是吧?这三个变量其实对应的就是我们刚才提到第一个是一个小括号,里边呢,它叫条件表达式,这呢其实也综合反应它就是一个变量了,根据它的这个值,所以加个问号啊,它的值如果是处呢,我们就执行这个表达式一,哎,然后呢,只有一个冒号,哎,要么呢就执行表达式二,哎,这就我们整个这个结构啊。
02:00
行,这是它这个结构,然后呢,下边咱们进行一个说明。哎,说明啊,先第一个点说呢,根据呃,先这样说啊,说条件表达式的结果是一个布尔类型变量。喂,哎,布尔类型啊,然后呢,第二个点说,根据条件表达式的真或假。根据条件表达式的这个真或假,就是我们说出货false啊,然后决定啊,这个执行表达式一还是表达式二。表达式二啊,那么具体来讲就是说,如果表达式啊为处。哎,则执行表达式一。
03:00
哎,否则啊,或者别否则了,就直接说,如果表达式为false,哎,则执行哎表达式二。哎,就是这样的一个情况啊,那咱们呢,先来写一个例子。啊在这啊,比如说比较典型的一个例子呢,就是说我来获取两个整数的较大值。行,我现在呢,定义一个M是12,哎,定一个N啊是五,现在呢,获取它俩当中的较大数。较大值,那我就来个小括号啊,说如果M呢,要是大于N。M要大于是处,我是不是就拿M去充当,否则呢,哎,那就拿N充当,把这个结果呢,我们赋一个变量,哎,我们比如叫max。
04:00
哎,就是较大值的意思啊,来我们输出一下。哎,输出一下我们这个max,哎,这呢就能获取它俩中的较大值了,就。哎,这结果呢,这就12。啊,这个呢,其实比较好理解啊行,那这里边呢,其实有一个隐含的一个要求啊,什么要求呢?大家看我们这呢,这这其实毕竟是一个运算符,那运算符呢,它就一定会有个结果了哈,那你看我这里写这个max,我结果呢是用int型来接收的,你说这个int型它主要是取就是我这生命成in的型啊,那你生命的类型主要取决于什么呀。哎,是不是取决于这个条件表达式啊,因为呢,如果你这个是针,我们相当于是不是把M付给他了。
05:02
呃,你要是甲的话呢,我就把N赋给他了,所以我们这max它的这个类型实际上呢,就取决于这个表达式一,或者呢,是这个表达式二了。啊,那自然而然的,我们这就有个要求哈,说这个表达式一和表达式二这个类型呀。啊,要说说一样的肯定可以,但是其实也到可以不一样啊,但是不管一样也好,不一样也好,至少呢,他俩都得能够统一为一个类型。什么意思呢?你看比如说我这呢,还写成这个M大于N啊。如果呢,要M大于N,我输出呢,我输出一个二,如果呢,嗯,M不大于N是一个false,我输出个1.0。这两个类型呢,显然不一样了,但是呢,这俩是不是也一定可以统一为一个类型啊?同意,为什么类型对,那就double呗。
06:00
哎,这个我写一个number。哎,这样也可以,就是说没有要求说表达式一和表达式二呢,必须要相同,但是它俩呢,一定要能够统一的一个类型,因为呢,我们这个运算符呢,会有一个结果,这个结果呢,要么就是拿它的指代符的,要么是拿它的指代符,你得能让我用一个这个一个一个统一的类型呢,去接收这个一表达式一或者表达式二啊,这是我们说的第三个点。哎,说这个表达式一啊和啊表达是二,哎,这个我就不说是相同的啊,那我就说呢啊要求啊是一致的。哎,我就这样来说了啊,哎,这是一致的,就是我们得能够把它俩统一成一个类型啊,这个呢想写法是对的,我们编译一下看看啊。哎,你看这个语法上是过了的啊,你这样写就不行了,说如果呢,我这个M呢,要是大于N,哎,我这呢,我写一个二这呢我写一个字符串。
07:05
说这个N大。你说我这时候怎么去接受啊?这俩能统一同一个类型吗?显然不能,你说要用in的接收,万一我要是字符串呢?要用字符串接收,万一要是二呢?像这种写法,前面呢,就根本就没办法去给他统一了,所以这呢一定是错误的啊。嗯,对,你这块加上一个双引号可以,那就都是字符串了,当然都双引号了,那不就都成字符串了,那肯定可以啊,这呢咱们就想说明这俩类型呢,就是没办法统一成一个类型的时候是不可以的啊。啊,这个肯定是一个编译错误的啊行,这呢是我们说的这个事啊,然后呢,再接着比如说刚才呢,我们这里说的是M大值N,这个M和N获取它俩的交大值,那也可以呢,我们做这样的一个,哎,输出。
08:01
哎,比如说呢,呃,M要是大于N啊,如果要是这个是出的话呢,我这就说叫M的。嗯,那对应的那个呢,好像就应该叫N大。哎,应该这样的,这呢我们可以统一的拿字符串去接收,哎,Str这样去接收这个编译没问题吧。对,这是对的啊。哎,保存来测试一下。哎,这个呢叫M大啊,但是这个呢,描述的稍微可能差点意思啊,就是万一要是M和N一样大呢。M要一样大呢,这块没问题啊,就是你获取谁都可以都是最大值的,但是你这块描述的时候呢,你说谁大呢,其实都差点意思啊。哎,那我们想通过这个小题目说明一个另外的情况,就是呃,上运算符呢,其实是可以嵌套的啊。
09:03
如果M大于N,那确实是M大,但这个如果是一个false的话。其实有两种情况。一种是相等,一种是N大对吧,那这个位置呢,我可以把它改掉。哎,我们呢,又用一个小括号呢来表示,在这里边呢,我们再写一种情况说,如果你是M等等于N呢。哎,如果你是M等于了,那这是我们说的叫哎相等M和相等,哎,否则的话呢,这个我们再来一个冒号,哎,这呢其实就是N大。哎,让我们整个这个。看着啊,我现在圈住的这个三元运算符,整体上来充当我们外层的这个三运算符的这个表达式二。能看懂吗?哎,能啊行保存一下,比如说呢,我们把上面这个N呢,咱给它换一下啊,我也就换成12了,就是它俩其实就相等了,来我们测试一下。
10:09
边E边形,那M和A相等。嗯,就是它是12,它是12这两形是false,哎,就蹦到这了,蹦到这里边呢,一看相等的啊,就输入它。行,这个呢,我们想说的是这第四个点啊,就是三一算符呢,是可以嵌套的,嵌套使用啊。行,这呢是第四,呃,这第四个小点啊,然后再接着呢,我们再说一个这个问题啊,这呢其实也不是个问题了啊,就是个练习,哎,我们要获取三个数的。最大值。哎,上面的话呢,咱们练习了一下,说获取两个数的较大值啊,现在呢是三个数。我们定义成啊,这个N1,这个呢是一个数,N2啊是一个数,N3是一个数,就来一个负的,获取他们三个当中的最大数,嗯,最大值。
11:12
这个怎么做?呃,先先从两个里边挑出来一个较大的,然后哎,再拿挑出来的这个跟第三个去比一下,对吧?对,这也符合咱们平时这个平时的一个认知,说这个三个人,这三个人谁高啊。也就是说,那那三个人都立这一下不就知道了吗?那这个咱们这不行啊,这你不得一个一个来是吧?哎,我先从这两个人里边挑出来看谁高,然后高的那个再跟第三个比一下啊,那结果谁高,那就是他们三个边最高的了,哎,就是这样的思路啊,来,我们来代码写一下。哎,现在我们拿这个N1啊,如果它大于N2。
12:00
哎,那我就取出来N1,否则呢,取出来N2,对这呢,我们接收为一个哎,Max就是叫MAX1了啊,然后接下来这个MAX1呢,再跟我们这个N3去比。哎,如果呢是处,那就是MAX1是大的,否则呢,就分三。哎,这个我们接收为8X2。那自然而然,它是不是就我们最大值。真的。哎,这呢,三个数中的这个最大值为,哎,加上我们这个MAX2,哎,这就可以了。哎,编译运行,哎,这个就是30,这就是最大的啊。行,嗯,这呢,就相当于我们写了两个三元算法啊,先后这样运算的,嗯,有没有同学这个能合成一个呢。
13:00
或者这个我们这两个能不能合成一个呢。有同学就这样的,你看我们对啊,把这个呢拿过来,嗯。给我换一个,比如叫三吧,然后这里边这个那S1呢,它其实是通过它算出来的是吧,那就把它的CTRLC一下,我这拿它替换啊,我这整个小括号啊,把刚才那个整个数据呢扔这。然后这个呢,是不是还是啊。对,小框一下,然后把刚才的还是这个式子啊扔过来。好像看着这个可读性是不是就差很多了啊,多了一个括号吗?嗯,有同学还担心说能不能算出来来跑一下看看啊。30度加大值,这写个三好三。愿意,哎,我没少括号啊,要不他就报错了运行。那也可以啊。
14:01
虽然说呢,这样写感觉挺帅的啊,但是呢,不建议大家这样写了。你自己写完以后呢,假设让你改一改,你是不是都不敢去动啊,你动买你说是吧,这个可读性太差哈,所以呢,咱们写代码呢,大家不要专门去追求这个说看着挺帅的哈,或者怎么样的,嗯,这个帅的话呢。基于的这个两个前提哈,第一个呢,就是说你的这个效率很高啊,这个呢叫帅。啊,那就属于你这个算法的一个改良了啊,这个这个是值得赞扬的,第二个呢,所谓的算呢,就是你这个代码给它整到一起,看着就是挺复杂的,就一行,原来呢,可能三行能搞定的写成一行了,但其实算法层面根本没有更快。啊,那这个时候呢,其实是不追求的,那你只是平白无故的让这个可读性更差,这呢其实应该是反对的啊,就是像这种情况呢,在工作中就要少写这样的代码啊。哎,不是说这个代码的话呢,你这个写的行数越少,反正它就越好似的,你看你的真正这个执行效率有没有高,实际上这个效率跟他比并没有提高,那你这个写法其实就没有什么意义,大家还看不太懂啊,比如说在工作当中,你自己写的代码,现在知道是怎么回事,那回头呢,过了一个月以后呢,你回来你去改,你都不敢动。
15:19
是吧,这是一种情况,另外一个呢,就是说如果呢,有一天你想离职了,然后呢,这个项目经理说你把你的代码呢,交接一下,交给交给这个新同事,这个新同事呢,本来呢,这个一周他就可以上手去,接着在你这个基础上再开发了,结果呢,你这个代码的可能性特别差,一个月也没上手啊,那这一周跟一个月之间的这个工资,这个公司里边不就是白白的得开三周的工资嘛,公司不就得公司不就得多花钱了嘛,是吧,所以说呢,从这个角度也是一样啊,就是我们写的代码的可读性要高啊,要强。哎,这个呢,不建议这样写啊。不建议嗯这样写,因为你这个效率已经没提高了啊好,那这呢,我们把这个三运算符呢,这个主体的内容呢,其实就算说清楚了啊。
我来说两句