00:03
我们这个程序里头啊,大于等于这件事情可以做,是因为大小判断在Java来说是一种运算。这种运算呢,我们把它叫做关系运算,因为它是用来计算两个数或者说两个值之间的关系的。A和B。如果A大于B。那么它的结果就是true,如果A不大于B,那么它的结果就是false。所以我们看到在这一页我们列出了我们Java所有的那些关系运算呢?我们叫做运算符,通过这些运算符,我们可以去比较两个值之间的关系,比如说我们有两个等号连起来表达说我们要去判断它们是否相等,如果要判断它们是否不相等,那么就是一个感叹号加上一个等号,所以感叹号加等号意思就是不相等。我们以后还会在其他地方看到感叹号可以用来表达,不是啊,那么大于呢就是大于号,大于等于就是大于或者等于,小于是小于号,小于等于是小于或者等于,这些符号叫做关系运算符,它可以帮我们来计算两个值之间的关系,如果这个关系是满足,满足的是成立的,那它的结果就是true,否则的话,它的结果就是false。
01:22
我们上星期曾经提到过运算符是有优先级的,比如说乘除比加减要来的高,我们还曾经提到过一句话,说所有这些优先级的设计呢,是为了让你写出来的式子和正常的思维是一样的,因此呢,为了让式子和正常的是一样的,我们的关系运算的这个优先级呢是比较低的,比如说我们在这儿看到说七大于等于三加四,对这一行来说,我们的优先级呢是说。加的优先级要来的高,所以呢三加四会先算,算完之后呢,再去和这边的七做比较,用的是中间这个大于等于的运算符来做比较。
02:00
如果说优先级不是这样子的,说这个关系运算符法优先级要高一点,那就会变成说我们先要去做七大于等于三这件事情,得到的结果是个true,对不对?其实的确是大于等于三的,所以我们得到一个结果true,然后这个true呢,再要去和这个四去做加法的运算,这是没有任何道理的。啊,这是没有任何道理的,所以不会是这样子的,不会是这样的,他一定是先。先做后面的三加四,这是第一步的,然后第二步再来做这个大于等于的判断,呃,另外一方面呢。判断相等不相等的这两个运算符,他们的优先级呢,要比判断大于小于的呢要低一点啊呃,所有的关系运算符里头优先级还会不一样,那如果有连续的连续的这些关系运算呢,它是从左到右进行的,所以我们来看几个例子。比如在第一个式子里头,我们又有大于大于,又有等于等于,那么这两个是否大于呢?会先算,算完之后我们知道这个是true,这个也是true,那然后我们判断说他们是不是都是true,所以这句话的意思其实是先去判断两边的关系,然后看它们的关系是否是一样的。
03:15
这句话呢?这句话在Java是错误的。因为。他的意思是说这是两个大于啊,他们的是一样的关系运算,所以他们要从左到右做,因此我们会先做这个。先做这个以后六大于五的结果得到了一个true,然后我们试图去做true大于四,对不起,这件事情做不来,因为。是true和false的结果,True和false,而四呢是一个数字,数字和true和false是不能够做任何的换算的。这句话的意思是说我先去做,因为这里头有相同的运算符,所以我先去做A等于BA和B,如果是相等的,那么是true,如果是不相等的,那么是false,然后这个true和false再去和后面的这个true和false做比较OK,所以这个这个做法是可以的,虽然它没有什么意思啊。
04:09
那这一句话呢?但这句话是错的啊,我们打个标记,这句话呢,在甲板来说。又是错的。为什么呢?因为我们先要去做A和B是否相等的判断,结果呢,我们会得到一个true或者false,而这个true或者false和后面的这个六。是不能去做判断的。那么这一行该怎么看呢?在这一行里头啊,我们出现了两个运算符,一个是相等不相等,一个是大于。那么我们知道这两个运算符他们的优先级是不一样的,你看我们的优先级啊,是不同的,判断是否相等的,是要低一些的。因此在这种情况下,这个会先算大于是否大于会先算?那么B大于force能不能做呢?啊。在这种情况下,一个是false,一个是B,如果B是整数或者是浮点数,那么整数和浮点数和这个false two之间是不能比较大小的。
05:08
假如B的值就是true或者false,我们以后会学到我们也有这样的类型的变量,如果B就是true和false true和false之间没有谁大谁小。你不能说true就比force大,因为他们没有大小先后关系啊,他们表达的这种状态,所以这是不行的。那么如果我们加上括号行不行呢?我们先做A和B是否相等,当然A和B是否相等,我们可以去做,这是可以做,做完以后它是true或者是false,但是这个true和false与这个false之间一样,是不能比较大小的,所以这也是不对的。那我如果有一个浮点数和一个整数,他们俩之间能不能来比较是否相等呢?我们来试一下看,我们不妨借用一下这个代码哈,我们想要做的事情就是说我们试图呢,让他给我们看一下,说五是否等于5.0。
06:00
好,我们来运行一下。他说,这是true。啊,他说这是Q5和5.0是相等的,当然这里有一个三角,他说呢,这是在比较完全相同的表达式啊,因为因为两边都是常数嘛,所以这这明显是相同的,五和5.0是可以用来做比较的,还有一个问题是两个浮点数能不能来比较它们是否相等呢?我们来试试看这个程序。Force,这个force是这句话出来的,也就是说我们现在做的事情是。我们有一个double啊,有一个浮点数叫做1.0,另外一个浮点数呢,是一个两个三个四个五个六个七个八个九个十个十个0.1加起来。那从算术上我们知道十个0.1加起来就是一,和那个1.0应该是一样的,但是呢,他告诉我们说他们不相等。我们上星期讲过,浮点运算是有误差的,这个误差会使得十个0.1加起来和101.0之间是有差距的。
07:08
我们可以把这两个数都打出来,看一下它们到底是多少,各自是多少。我们在这儿再加一个输出。A等于多少?B等于多少?我们来运行一下。他说A等于1.0,而B呢,0.9999999。不相等。所以通常在判断两个浮点数是否相等的时候,我们不能直接用两个等号来判断,我们需要用另外一个方案,是这样子的。我们来判断一下说。A和B的差的绝对值是否小于一个比较小的数?
08:02
啊,在这儿。我们做的事情是我们去对A和B做了一个减法,然后呢,用这个方式去得到了它的绝对值,因为A和B我还不知道谁大谁小对不对,所以他们的差距应该要去求一个绝对值出来,然后看这个绝对值是不是小于这个一一负六是什么意思呢?这是一种科学科学计数法的表示方法,表示是一乘以十的负六次方,我们我们觉得这个数大概大概比较小了啊,我们来看看这样是不是可以得到一个出的结果。这是true啊,这是true,所以去判断两个浮点数是否相等,通常我们得要用这样的手段。求他们的差距,然后看是否小于一个比较小的数。
我来说两句