00:00
大家好,我是海波老师,我们接下来来学习Java中的逻辑运算符啊,把这个关掉,来我们这里呢,拷贝一个新的,我们把这个改成三就可以了啊,点击OK,然后呢,把下面这个呢,我们全都去掉,然后呢把它改一下,咱们称之为叫逻辑运算符,那么逻辑运算符都有什么呢?大家看一下我们的图形当中逻辑运算符啊,它这里面有逻辑运算符和短路运算符,其实啊也都是一些我们的特殊的符号,对不对?那么它是干什么的呢?这里给大家解释一下,这里说一下所谓的逻辑啊,咱们的运算符,它其实就是用于描述啊咱们的多个条件表达式之间的关系的运算符。咱们之前啊,不是有那个关系运算符吗?谁大谁小对不对,我们这里就不是我们那个数据的一个关系了,说的是条件之间的关系啊,有这么个运算符,那么好了,它的基本语法结构是什么样子呢?来咱们说一下图图咱们叫基本的语法结构。它的语法结构是这个样子的啊,就是说我们会需要用变量来接收它的一个结果,所以我们的变量它等于我们写上,它叫条件表达式一。
01:10
条件表达式一逻辑运算符,然后呢,写个括号啊,咱们的括号,括号呢,我们就写上叫条件表达式二,诶是我们多个条件表达式,它们之间是什么样的关系?哎,就是这样,哎老师呀,那这个变量的取值是什么呢?这个变量的结果呢,其实还是我们的不玩类型,所以咱们说一下结果的这个变量的类型它依然为我们的不玩类型,哎,就是这样,哎老师呀,那条件表达式的结果是布尔类型,那么你的这个变量它也是布尔类型,那么它们之间的关系是怎么回事呢?这里咱们说一下,那么我们这里就写上,因为我们的条件表达式的这个结果类型为我们的布尔类型,那么所以啊,逻辑运算符我们叫表达式的结果类型,它也是部位类型。
02:05
但是它分几种情况,分哪几种情况呢?大家看一下,因为我们是两个条件表达式呀,咱们假设啊,我们的第一个条件表达式,它是出。对吧?然后呢,我们的第二个条件表达式呢,它也是个true,就是说我两个值如果都是true,那好我当前的这个变量的这个值是什么,对吧?你是true呢还是false呢?以此类推,如果你的第一个值是false,你的第二个值是true,对不对?同学们,那这个是什么呢?诶我们也要分清楚,还有再来,如果两个都是false,那么结果是什么样子的?还有一个再来一个,我的第一个是我们的true,但是呢,我第二个呢是我们的false,同学们能不能明白老师说的意思,就是因为你的条件表达式它有不同的取值,而我的条件表达式二它也有不同的取值,那么这样的话呢,我们最终的结果就有这么几种可能了,对不对?首先我们这里就给大家讲讲我们的第一个逻辑运算符啊。
03:05
给他来一个,我们写上这个符号,这个符号是什么意思呢?它称之为叫与的运算,我们称之为叫做与啊我们的运算,哎,那这个运算是什么样的一个规则呢?给大家稍微的解释一下,这个规则是这样的,咱们这个与运算它要求。我们的两个条件表达式。都必须计算出结果,那么只有当两个结果它都为true时,我们最终结果为处。其他情况它全是false,哎,这就是我们的一个雨的一个基本规则,说的简单点就是这个条件也要满足,那个条件它也要满足,必须全都满足,就是这个意思,那好了,咱们来给大家看看啊,咱们来演示一下一个基本运算,那比方说我现在什么呢?我写上一个int,我们的I,它等于十,现在呢,我干嘛呢?我写上一个布尔类型,诶我们要一个结果叫result,那么什么结果呢?第一个我们就是条件表达式,什么东西东西啊,我们写上它叫做I大于五,同学们,这就是一个条件表达式呀,那么这个条件表达式我们说过了,我们应该干嘛呢?给它括起来会好一些啊,然后呢,干嘛呢,我再写个括号,这个括号呢是我们的条件表达12,我写上一个I,我们写上它叫小于20,然后呢,我把两个条件表达式中间我加上一个与的一个运算符来写上它,你这么写完了以后,那么它的结果就是我们最终的结果了。
04:41
大家看一看,我们来打印一下,打印以后我写上叫result,哎,就是这个意思,诶老师啊,那这个结果应该是多少呢?我说过了,我们的这个与的运算,它要得结果,它要得结果,哎,两个结果最后看看是不是都是true,如果都是true,那么这个result就是true,只要有一个是false,那么结果就是false。来咱们看看第一个叫做I大于五,那肯定大于五嘛,对不对,十肯定比五大嘛,好,这是第一个没问题,它是个数了,那么第二个呢,I小于20,那十肯定小于20嘛,所以它也是处,没问题吧,那好,两边都是处,那么结果肯定为处啊,所以运行一下。
05:20
运行以后看结果,你会发现结果它确实就没出,但是我改一改,我怎么改一改呢,我这写上一个大于。如果你写个大于的话,同学们你就会发现我们的I如果大于五,那肯定大于,这个肯定是处没问题,但是呢,I不可能大于20嘛,那所以这个就应该为false,前面说过了,只有两个都为true,结果才为true,那么我这是false就肯定不为处了吧,它的结果应该就是false,所以我运行运行以后看结果,哎,你看不就这意思吗?哎,老师呀,那如果我后面这个为谱,前面这个为false呢,我告诉你是一样的,所以我们这写上它,我们这个I,我们小于五,这个呢,我们写上它小于好了,写完以后大家会发现这个条件是没问题的,它是true,但这个条件是false呀,十怎么可能小于五呢?不可能它是false,所以我们运行之后看结果,它的结果依然为false,没问题吧?哎,所以啊,你只要把这个记住了就没问题了。
06:19
好了,同学们,这就是我们第一个给大家说到的一个雨的一个运算符,那好,除了它以外,我们再拷贝一下。把这个呢,我们拿过来,我们写上一个叫做什么呢?竖线,咱们称之为叫或运算,那好了,把这个我们拷贝一下来助调,助调以后呢,我们把这个放过来啊,放过来,我们把这里的这个符号呢,我们改成一个竖线,哎,你会发现语法上是对的,但是结果是什么呢?这就需要涉及到它的运算规则了,来拷贝。拷贝以后我们来看看这个我们称之为什么呢?我们叫做或运算,这个或运算呢,它要求两个条件表达式都必须计算出结果,那么只要记住啊,只要只要任何一个结果为我们的处,那么最后结果它就是我们的出诶。
07:09
同学们能明白这个意思吗?我们只要任何一个结果就它为处,或者它为处都行,这就是或的意思,只要任何一个为处,结果就为true,只有当他两个都是false的情况下,结果才为false。所以呢,咱们补充一下来。那么我们的两个表达式啊的结果,它都是我们的force,那么我们最终的结果它才是我们的false。好了,我们这里也来演示一下吧,那怎么演示呢?其实不用演示了,咱们再去看吧,我们这个10I等于10I小于五,这个条件肯定不成立啊,它肯定是false吗?但是I小于二时,它成立啊,它是个处啊,它如果成立的话,这个不成立,没事,有一个为处,结果为处,所以运行一下。运行以后,大家会发现这个结果就出来,对不对,哎,就这意思,好,那老师,那如果两个条件我都不成立呢,比方说我们这里的I大于20,那你会发现那就不对了,我们的I它不可能小于五,同样它也不可能大于20,那这样的话,两个结果呢,都应该是false,那么好,最终的结果应该它也是false,所以结果它就为false,这个就没问题了。
08:23
所以啊,我们的或运算和这个与运算,它的重点就在于我们对两个表达式要求值啊,对于我的值来判断我到底最终结果是什么,这个你能明白其实就够了啊,所以呢,这就是我们所谓的逻辑运算符,但是呢,我们的逻辑运算符啊,其实还有别的啊,我们再给大家讲两个吧,好不好来。我们这里呢,再给大家讲我们的逻辑算符来拷贝,拷贝以后我把这个呢,给它助掉来助掉,助掉了以后呢,我们接下来要讲的比较特殊了,为什么是两个这个符号了。它也称之为叫与运算,但是这个叫什么呢?叫做短路运算符,诶什么叫短路啊,其实啊,就是后面这个表达式是否执行的意思,所以这里给大家解释一下咱们我们这个短路的这个语的运算啊,哎,咱们说一下短路语运算,它会根据我们的第一个我们的条件表达式的结果来判断是否执行我们的第二个。
09:27
条件表达式。诶,老师这什么意思呢?为什么要根据我的第一个条件表达式的结果来判断第二个呢?这是因为啊,如果我们的第一个表达式的结果就能够推导出我们最后的结果的话,那么你的第二个表达式是不是就不用执行了?哎,所以啊,有这么一个概念,咱们比方说吧,咱们就以这个为例,大家看一下,我们说过了,我们的一个符号的与运算的话,他说了两个结果都为处的结果为处,那么只要有一个是false,那么结果就是false。
10:01
那么大家想想,如果我的第一个值是false的话,那么结果肯定就出来了吧,你不用算它,它不管是true还是false,结果一定都是false,对不对?那好,那你这不就可以不用计算它了呢?哎,这样的话不就节省我的资源了吗?所以啊,这就是我们所谓短路的一个概念,我不走我的第二个了。好,同学们,我们来验证一下,咱们这里写上两个东西,我叫做I,它等于十,我再写上一个勾,它等于我们的20行了,写完以后,我写上一个布尔类型的,我们叫做叫结果,它等于什么呢?叫做我们的I。大于我们的十,然后呢,放过来,放过来以后,然后呢,我写上一个这个符号,然后写上一个括号,我们叫做加加I,然后呢,加加勾,我们写上叫加加勾,哎,它是不是我们大于我们的30,我这么写,写完了以后,同学们看看什么意思。我相信啊,这个大家能明白吧,我前面讲过了,咱们有一个叫一元运算符,这个加加就表示自增的意思,把当前的这个勾我自增了个一,对不对,诶我们讲过这个事情,那好了,我们讲过这个事情的话,大家看看我们当前的这个I,它大不大于十啊,不可能,因为咱们的I呢,它就是十,他这个条件是不可能成立的。
11:20
既然不可能成立,那么这就意味着,如果我的第一个表达式来说一下,如果我的第一个表达式的结果为我们的force,那么我们就无需,那么就无需执行啊。那么就无需执行我的第二个表达式。没问题吧,同学们对不对?你想想它都已经为false了,最终的结果一定为false吗?我记完它干嘛呢?不用吧,所以呢,我们就来打印,打印以后我们就写上叫就可以了,好了,我们执行以后,我们验证一下运行。运行以后看结果,结果为false是吧?哎,老师啊,那你这个怎么证明我的这个到底执没执行呢?很简单,我们这个加加I,它会对当前的这个勾增加一个一吧,叫自增一,对不对,我们就验证一下这个加没加一不就可以了吗?所以呢,干嘛呢,我们把这个我们的勾给它放过来,写上一个勾,我们来判断一下这个勾有没有加一就可以了,如果它没执行是一定不会加一的,所以它就应该是我们的20,如果它执行了应该是什么,是不是应该是我们的21呀?哎,所以我们运行。
12:31
运行以后大家看一下我们的结果是20,说明怎么了,没执行,为了再验证一下,你把这个符号去掉,你去掉以后这个就是两边都要做计算了,所以我运行,运行以后看结果,大家看一下是不是21,能不能明白,同学们,所以啊,我们这一个符号和两个符号的区别就在于第二个条件表达式它是否执行的问题,哎,这里咱们说一下就可以了啊好,同学们,如果你这个能明白的话,其实我们这个竖线它也有我们的两个操作,所以复制。
13:05
复制以后我们写上它啊,咱们放过来,咱们写两个竖线,这个称之为叫短路啊,咱们叫短路的货运栓,那好,我们现在呢,把这个复制一下,咱们给它去掉,然后呢往这放,往这放以后它的基本的运算规则是什么呢?咱们复制一下来拷贝,拷贝以后给大家讲一下咱们的短路的货运算。它也会根据第一个条件表达式的结果来判断是否需要执行第二个表达式,那么我们的或运算它也可能不执行第二个呀,咱们回过头来,同学们看我们的这个逻辑,我是这么说的,任何一个结果为true,结果就是出,大家想想,如果我的第一个结果就是出的话,我问你第二个如果你不计算的话,结果是不是也就出来了,为什么呢?只要有一个为出,它为出了,诶,结果不就是数吗?所以啊,在这种情况下,你不计算第二个其实是可以的。
14:03
好了,同学们,这个咱们就说到这以后,咱们来演示一下我的这个地方,我改一下干嘛呢?我写个双等号,我的I它等不等于十,如果它等于十的话,哎,写个竖线,两个竖线,竖线以后还是这句话,那么这时候我们还是要打印结果和看这个勾的值,记住了,同学们,我们这个条件已经成立,它如果已经成立的情况下,这个根本就走不到,那它走不到的话,我们的勾不还是20吗?所以运行一下看结果,运行以后大家观察一下,你看结果为处,然后呢,我们的值是20,诶这个跟咱们前面讲的是完全相同的啊,所以啊,咱们这个逻辑运算符,你只要搞明白一件事情,就是两个条件表达式,他们如何去做关联和匹配。好了,我们最后呢,再给大家讲一个我们的逻辑非运算吧,所以呢,我们这里再来啊,来咱们这里呢,我们把这个注调注掉以后呢,我们去掉,然后写上一个我们的感叹号,这个感叹号是什么意思呢?就是非的意思啊,咱们写上它,咱们叫做称之为叫非运算啊,咱们叫非运算,这个非运算呢,其实就是相反运算的意思啊,叫相反运算,咱们演示一下,我现在给它一个I等于十,然后呢,我写上一个布尔类型的写个result,然后呢,我们写个等号啊,咱们写上I,然后呢,它等不等于十,诶咱们这么写,你这么写很简单呢,为什么?因为这是一个我们的条件表达式,它的结果I等于十,它一定是相等的,所以这个结果应该为出没问题吧,诶就是这样好了,我们现在运行一下,运行以后看结果,你会发现结果一定为出,但是呢,我的这个地方呢,我加一个感叹号,什么意思叫做相反运算,所谓的相反运算就是你给我个true,我就变成false,同样道理,你给我个false,我就变成true。
15:51
诶,就是这么一个相反操作,来咱们运行一下,运行以后看结果你就会发现我们现在的结果是为false,记住啊,它本来的结果应该是true,但是我加了一个感叹号之后,就变成了我们的什么我们的false了,那好我们再来一个,来我们写上一个,一写上了以后呢,我们写上一个什么呢?我们的大于,我们说了I等于十,不可能大于十呀,所以这个值一定为false,但是同样道理,我把这个拷贝我写在这儿,写完这以后,它的相反值false就变成了true,所以我们运行之后,我们的下一个打印结果应该是个true,你看看哎,所以这个也比较简单啊,好了,我们的逻辑运算符就先讲到这里啊。
我来说两句