00:00
好了,同学们,咱们咱们开始上课了啊,开始小周来了是吧?行啊,那就清楚了啊,那咱们今天上午啊,在最后的时候,我们。呃,我们讲的是什么呢?关于这个逻辑运算符是不是啊,逻辑运算符这块呢,我们主要是一个什么样的特点呀,主要就是我们这个运算符左边和右边啊,这两边呢,都是不玩类型,并且呀,我们运算完之后的结果呀,也是一个什么呀,不玩类型。啊,运算完之后的结果也是个类型。嗯,那。这个逻辑呢,其实就相当于是并且。啊,然后呢,我们这个并且相当于两边都是真,结果才是真,或者呢,这个或者呀,其实就相当于说一边是真,结果就是。这个逻辑非呢,其实就是取反,那如果为true的话,取反那就是false,如果为false的话取反那就是为true。啊,它就是取反的意思,这个运算符跟上面两个不太一样的地方在哪呀?这个运算符是在这个叹号的右边去写一个表达式就够了,那上面这个运算符逻辑与和逻辑或呢,它要求两边都有表达式。
01:10
啊,这个呢,是要求一边右边有表达式就可以了,但是这里呢,有一个这个运算符的优先级的一个问题,大家一定要注意这个事儿啊,注意这个事儿。好了,那么关于这个逻辑语,我再强调一下啊,两边都为真,结果才是真,或呢是一边为真,结果就是真,非呢就是取反,那么来看一看这个短语和短路。行吧,短路和短路货啊。它怎么叫短呢,对不对?哎,对短路的一个理解,这块啊,可能不是很好理解,咱们一起看一看,我给举一个例子,大家思考一下啊。就重点呢,我们这个运算符这块啊,看一看这个叫做。短路啊。关于短路。
02:00
啊,短路语是什么呢?是它啊还有短路或啊是两个竖线啊朋友们先说一下这个符号啊,都在键盘上哪个地方,我记得有一期学生问我老师,这个竖线是怎么打出来的。它是在这个,嗯,右大括号,右大括号那个右边,右大括号那个右边那个键啊,就是那个擦除键下边,或者是回车键上边的那个,就是一个什么呀,竖线。啊,但是竖线呢,你需要按一下shift键,再按这个竖线才能出来啊,如果你不按住shift键,它出来一个什么呀,反斜杠。对不对,哎,出来个反斜杠。好,那么这个在哪呢?这个呀,这个符号啊,是在这个上面啊,七就是这个1234567这个七,然后摁住shift键摁一下这个七就出来了啊,这是短路语短路货,短路语呢,短路货都是两个啊。啊,这个短语呢,是由一个呃两个并且符号啊短路或呢是两个或符号构成的,那其中啊重点重点啊这个学习什么呢?这个短路语。
03:08
啊,短语短货啊照葫芦。画瓢啊就行了。就像那个加加和减减一样,我可能会只讲一下这个加加啊,这个减减的这块呢,你自己去呃练习一下,你自己去研究研究就可以了,那么我们来看一看这个短语。那这个短语和我们上面的这个逻辑语有什么区别呢?哎,我给大家说一下是这样的啊。短路。和这个逻辑与有什么区别?首先啊,首先这两个运算符的运算结果没有任何区别,完全相同啊,完全相同,只不过。短路雨会发生什么呢?会发生短路现象?
04:05
那什么是短路现象呢,对吧?哎,所以说这块的话,我们可以解释一下什么是短路现象呢。对不对,哎,那另外还有一个就是说什么时候。使用这个符号短路语什么时候使用它呢?对不对,哎,这个呢,可能都是大家现在的一个疑问啊,首先对短路这个问题啊,可能就不是很清楚,到底什么是短路,什么时候用短路语,什么时候用啊逻辑逻辑语啊,短路语逻辑语那行,我在这里呢,可以给大家举一个例子啊,举一个例子我们来看看首先呢这两个呃。先测试一下啊,它的结果是不是完全相同的,就是说我不管用这个短路的,呃与还是逻辑,哎与我们先看看它俩的运算结,运算结果一样不一样,好吧,那c.out.print打印我们输出什么呢?啊就简单点吧,答,True true。
05:04
啊,然后这块呢,我们再来一个什么呀,False啊然后呢,再来一个什么呀,然后这边呢,再来一个什么,哎,False,接下来把这个复制一下啊复制一下切过来放到这儿之后啊,我在这儿呢,再加一个符号啊,我再加一个这短路语就出来了啊短路语那么这块呢,我料定啊这个应该是true对不对,哎,这个是什么呀,False是不是,哎这个什么呀,False,那这个呢,哎,它也是什么呀,True,哎这个是什么呢?哎,False,因为有一个是false,结果是false to false false to false false后六个是这样的一个情况,我们先来编译一下啊,先来编译一下,看看它结果一样不一样,来回车之后呢,我们在这里啊啊Java c吧,编译一下啊编一下这个叫operator。嗯,test03.java啊,编译之后呢,我们直接的运行Java operator test03走好最后的这六个是,呃,一个是TRUE2个false,一个处两个false,就是这几个值啊,所以从这个测试这块呢,你可以看出啊,其实它俩没什么区别,在运行结果上其实没有区别的,运行结果是完全相同的,这个我们就测试到这儿,那么接下来再往下我们看看他俩到底有什么区别啊,什么是短路现象,然后呢,什么时候用它,什么时候用它。
06:20
来,我们一块儿看一看啊。就是接下来啊,需要理解一下什么。是短路现象,什么时候会发生?啊,这个短路啊,什么时候会发生短路,呃,那么这块呢,我给一个什么呀?Int类型X法给一个十,然后in类型Y呢,我给一个九吧,给一个给一个随便一个11啊,给一个11system.out点打输出啊。嗯,我输出什么呢?XX呢,我大于什么呀,Y啊然后呢,呃,并且啊并且X干什么呀?嗯。
07:11
大于这个。啊,Y加加啊大于Y加加,好,大家现在看看这个表达式啊,整个这个表达式。这个表达式啊,这个位置用了一下逻辑语,左边呢,我说的它是个不玩类型,右边呢它是个玩类型。是不是,哎,先先是执行这个,在执行这个,然后执行它,那么这块呢,要注意什么时候,就是逻辑与。什么时候?没在啊。哎。这个答案是什么呀?就是两边啊,都是处。结果才是出。
08:00
这个有道理吧,这上午我们就讲过的一个东西嘛,对不对,X等于十,然后Y等于11,那逻辑与这个符号,哎,什么时候结果。为呢?就是两边都为真,结果才是真,那么大家看,X等于十,Y呢等于11 X大于Y10大于11,这是false。那么大家都知道。如果我们的。逻辑与两边都为真,结果才是真,其中左边这个表达式已经是假了。按道理来说啊,右边这个表达式是不是没有必要去执行了。对吧。就是说。我们可以分析一下对不对,左边的X大于Y。啊,这个表达式结果已经是false了。
09:01
确定啊,你X是十啊,是大于11吗?False对吧?表示结果已经是false了。其实整个表达式的结果已经确定是false。按道理来说啊,右边的表达式不应该执行。啊,右边这个表达式啊,它不应该执行。那么现在呢,我们想干什么呢?哎,我这样啊,换个行换个行啊,要不然看不见了,来这换个行。那么接下来我们c.out点打印输出,我们想输出这个Y的值,我们想看看这个Y的值是多少。那么接下来我们去编译一下Java c呢,去编译之后呢,我们va去运行,我们发现最后的结果是经过我们这个测试,我们发现这个值啊是12,它原先这个Y是11啊。他现在走到这里,我们测试Y等于12,这说明这个Y加加执行了。
10:04
那么这个Y加加执行,这说明什么呢?这说明这个逻辑与右边的这个表达式肯定也执行了,只有这个表达式执行的话,那么这个Y加加才会执行,所以通过这个测试。啊,通过这个测试得出得出什么呢?得出。这个YX大于Y加加啊,这个表达式执行了,因为原先是11,现在变成12,那这个Y加加肯定执行了呀。那按道理来说,实际上这个没必要去执行。没必要,因为这个已经是甲了,左边既然是甲,那结果就应该是甲。对吧?哎,所以说我们接下来再进行测试一下,短路语上面使用这个符号啊,是逻辑语啊,我们看看短语。那这边呢,是int类型的M吧,比如说还是一个十,然后int类型的N呢,等于什么呀?11,然后接下来呢,system.out点打印输入什么呢?叫做MM大于N。
11:08
啊,然后接下来呢,短路我们加上去,然后接下来呢,是M啊干什么呀?大于N加加啊大于N加加,然后接下来呢,我们C点我们输出我输出这个N的值。大家看啊,就说我们这块呢,是测试一下谁呢,我们测试一下这个测试短语。啊,这个符号。M等于十,N等于11 M呢大于NM大于N,这个结果已经是false了,那么这个是false,这个符号是个短语。那么为false的话,大家知道整个这个表达式实际上结果就已经确定是false,右边这个表达式它没必要去执行了,那么接下来我们看看这个N这一块,它原先是11,这个N到底是多少,我们输出一下Java c呢,去编译Java去运行,我们发现最后结果是什么呀?是一个11,那么也就是说通过测试呢,我们得出这个是11,那这个是11就说明什么呢?就说明我们的N加加没有执行,N加加没有执行,说明这个表达式呢,它没有执行。
12:09
那为什么这个表达式没有执行呢?诶,这种现象就叫做短路啊,就叫做短路,大家应该知道这个电电流对吧,以前学物理的时候我们学过这个啊,电路图对吧,电路这一块的短路就是直接这根线搭到那根线上,就相当于说我们这一块直接短路了,这个就不执行了,八只执行我们这个短路与前面的这个表达式啊,因为这个表达式已经放最后结果已经确定了,所以右边表达是没有必要去执行,从这个角度来看,短路语的执行效率要怎么高于我们的逻辑语啊,高于这个逻辑语。那么这块是什么是短路啊,就是说呃,当什么呢?当使用,就是说使用啊,使用短语的时候。当左边的表达式为false的时候。
13:00
右边的表达式不执行,这种现象被称为短路啊,这种现象被称为什么呀短路。啊,当左边的表达式为false的时候,右边表达式不执行的这种现象被称为短路现象,短路现象,所以这里呢,就得出什么是短路现象啊,啊就是其中右边表达式,右边表达式啊,右边表达式不执行啊这种现象。叫做短路现象啊,那么这个从方面来方面来,从效率方面来说,这个短路语比什么呀,比这个逻辑语的效率高一些啊,高一些因为因为。逻辑与啊。会将就是逻辑与不管第一个表达式。啊,结果是什么?第二个表达式一定会执行。
14:05
啊一定会执行,因为这个啊呢,两个表示都会执行,所以呢,它体现的效率要低一些啊,效率要低一些。那么这个理论上啊,经过我们的测试,我觉得大家应该是没什么太大问题啊,没什么太大问题,X等于十,Y等于11,然后X大于Y,这个是false,右边表达是没必要去执行,结果测完之后,Y呢等于12 Y原先等于11,这说明Y加执行了,证明这个表达式和这个表达式都执行,这个没有短路现象,那么到了这之后呢,这个M等于十,N呢等于11 M大于N之后呢,明显是false,然后接下来我们执行完这个之后呢,再往下我们看这个N的时候,发现N10 11,这说明后面这个表达式没有执行,为什么?因为前面这个结果已经是false了啊,这个发生了短路现象,那么刚才说了这个效率要高一些,但是大家一定要注意啊,一定要注意。有同学说老师既然这个效率高,为什么以后不都用它对吧,为什么还有还有这个这个这个逻辑语的存在呢?哎,记住啊,同学们,存在即合理啊,存在即合理,存在即合理,以后的开发中,短路与和逻辑与还是需要同时并存的。
15:15
啊,同时并存的。啊,大部分情况下都建议使用什么短语啊短语。啊,大部分情况都建议使用短路语。只有当。既需要左边表达式执行,又需要右边表达式执行的时候。才会选择逻辑。语啊,才会选逻辑语,因为这个东西呢,以后的开发你很难说啊,有的时候啊,我们还真不能用它,因为你用了它呀,就会导致你后边这个不执行。啊后这个不执行,因为说完一个表达式,我要二表达无如不你第个达是真还是假种需有这种需求,那么这种需求出现之后呢,你就不得不使用这个逻辑语,你使用短路语啊,就会导致后边表达是不执行,那往后的结果呀,可能就有问题了啊,所以像这种特殊的业务情况下,我们就必须得选择什么呀,我们的一个叫做逻辑语啊,所以存在即合理啊,存在即合理,所以说这块呢,你不要说学了这个短路语说啊短路语好好好好好啊逻辑以后不用了,扯淡啊,这个不能这样做啊,其实就要都用。
16:37
但是你大部分情况下都是用这个。啊,那极少数的情况下才会用它,什么时候用,那得看你具体的业务要求是怎样的,你需不需要右边这个表达式执行,你需要右边表达式执行你就用,不需要你就用短语不就完事了吗?是不是?哎,所以这个符号的一个选择还是很重要的啊,但大部分我说了啊,用这个符号这个效率要高一些啊,高一些好了,那么现在呢,我问大家一个问题啊,这个问题是什么呢?
17:04
就是说呀,呃,什么时候发生短路或现象,就什么时候发生短路或现象。哎,你得思考一下。短路你知道了,什么时候发生短路什么时候发生?短路,短路。货的时候。或的时候啊,或的时候,只要有一边儿是处。结果就是,只要有一边是结果就是。所以,所以当什么呀,当左边的表达式结果是true的时候。啊,右边的表达式。不需要执行啊,此时会短路啊,会短路,所以说呢,一个是左边为false的时候短路,一个是左边为的时候短路。
18:04
啊,左边为的时候短路,就是第一个为真的时候短路啊行了,那么到这为止呢,咱们这几个呃,逻辑运算符啊,这个逻辑呀或呀非呀对吧?哎,逻辑这个短路语呀短路或呢,我们就啊说到这儿啊就说到这,那么下来之后呢,大家自己呢测一测啊测试一下好吧。
我来说两句