![Java王者归来:从入门迈向高手](https://wfqqreader-1252317822.image.myqcloud.com/cover/394/27563394/b_27563394.jpg)
4-5 布尔值、反向运算符、比较运算符与逻辑运算符
4-5-1 布尔值
在设计程序流程控制时,会使用到布尔值,第5章中会有完整的应用。布尔值只有两种,一种是true,另一种是false。
程序实例ch4_14.java:列出布尔值的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P50_527310.jpg?sign=1738880070-ahOeT49Tlt6qrq5AV12FAKKGStlF1IR0-0-0d0148d87a35163766cd2c27a6446a47)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P50_527333.jpg?sign=1738880070-m7o7QloDZCXPhD3s3RoBgbNZw5ggByoZ-0-10a4c6b3ce34905baed6215437073f3b)
4-5-2 反向运算符
反向运算符符号是!,通常会搭配布尔值变量使用,可以获得反效果的布尔值,当然这个运算符主要也是要配合程序流程控制。
程序实例ch4_15.java:反向运算符的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P50_758004.jpg?sign=1738880070-5vjvI2ASn67K3S4eYTiFslCqhYQ9LvbO-0-1b955b9db767a0db6c79ef67471aa5dc)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P50_527343.jpg?sign=1738880070-Kdg7UoUxc24smo3MRCP7sg1GiGJn0Pzx-0-6f748ce8cdc26ecf895adde7f1b71865)
4-5-3 比较运算符
比较运算符有下列几种,比较结果如果是真,则返回true,如果是伪,则返回false。
>:大于,例如,18>9,返回true;8>9,返回false。
<:小于,例如,18<9,返回false;8<9,返回true。
>=:大于或等于,例如,18>=18,返回true。
<=:小于或等于,例如,18<=18,返回true。
==:等于,例如,18==18,返回true;18==9 ,返回false。
!=:不等于,例如,'x'!='X',返回true。
程序实例ch4_16.java:比较运算符的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P51_527746.jpg?sign=1738880070-tzqrQ2L6YBLLV34BykPA4ZiDiYwWZAxw-0-a48eca5d6f8ca745cc3b8590702cac79)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P51_527752.jpg?sign=1738880070-tHvYEjZgFaGfys8LKVMmXVALlpKDxftm-0-203c41ce867196fbfa47e98c69a7a48e)
4-5-4 逻辑运算符
逻辑运算符有三个,如下所示。
(1)&&或是&;
相当于and运算,可参考下表。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-T51_757900.jpg?sign=1738880070-1n1hFUMK2REXHYV9TUKKl1eAZBw3H9Ae-0-eee84591e9a49f2ffe5e2c72990174c4)
(2)||或是|;
相当于or运算,可参考下表。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-T51_757901.jpg?sign=1738880070-epSXl0ptXYeexq7Ia8OvbJIrROY9DgQK-0-9a48f7729098917eb728818fbf045521)
(3)^。
相当于XOR,如果操作数值相同返回false,否则返回true,可参考下表。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-T51_757902.jpg?sign=1738880070-HPMsTyCiZa6nhczjR8FMHjagOIt5G2VX-0-f95e7ccc4c3eb5c81e7aee26136002e1)
程序实例ch4_17.java:逻辑运算符&&的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P51_528003.jpg?sign=1738880070-iqMsurtrOvbiqdBSlFs7VZGzdMLWKnuX-0-d4dd1f022905572efcac800458282038)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P51_528009.jpg?sign=1738880070-SlkCvGPkcwb2i6WZrGxJCL5jJsI257z7-0-3db547c74efab7a78469ea91dbfe1096)
读者可能会感到奇怪,为何Java提供了&&(或||)逻辑运算符,还要提供好像功能完全相同的&(或|)逻辑运算符?虽然它们的运算结果相同,但是过程还是有差异,使用&&(或||)时,如果&&(或||)左边的运算符可以决定结果,程序会忽略右边运算符的操作。在Java专业术语中又将&&(或||)符号称为逻辑运算短路符号。
程序实例ch4_18.java:列出&&和&运算时的差异。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528417.jpg?sign=1738880070-LnMzgHO6vng4l64FvJblCJwC47FZsgWn-0-e287de1221971a4d434c0c0a478a8625)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_757905.jpg?sign=1738880070-eotusG84dHADp568yJjN9RpmyohAaGTm-0-2c2e03c7ddfdb06d67f27c4deb8b24c9)
对于第5行而言,由于&&左边的a是false已经可以预知运算结果了,所以将省略右边的i++运算,所以第6行列出结果i等于5。对于第7行而言,由于是使用&运算符,因为左右两边的操作数均需执行完毕,所以会执行到i++,第8行列出的结果是i等于6。
程序实例ch4_19.java:逻辑运算符||的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528426.jpg?sign=1738880070-Wcple715tJHZWwC5WiJSE190rAqpx1Tu-0-1b2be926b3bca7495f141e997e24b619)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528432.jpg?sign=1738880070-SE5ue80d9MaU6hFSmG2DpRJY8WkD6HiP-0-30ed6cf9ef010f98e9d38e23f35e726a)
程序实例ch4_20.java:逻辑运算符^的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528435.jpg?sign=1738880070-glHVs5w3HmktLw4ekNnZV69G0Ie843AQ-0-7b6a3cef633885a37c880e3e69c63ae0)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528441.jpg?sign=1738880070-pjuONCXDGXM277dkxnPwBVBMC5b1mR4c-0-3cca6ba72250dc7de2d8e641b41c5fad)
4-5-5 再谈三元运算符
在4-1-7节中有说明三元运算符的意义,当时尚未介绍比较运算符(4-5-3节),所以无法以实例说明,下列是三元运算符的公式:
表达式?X:Y
程序实例ch4_21.java:三元运算符的应用,分别列出较大值与较小值。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528445.jpg?sign=1738880070-cKTPQKlxlfmPh6FOJ1FsGB7Au7khuXGT-0-5f97437d880172834c8c27a6062d7b6b)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528451.jpg?sign=1738880070-hRSoCTGN9WlX50G8GzQzHZCPFWawKl72-0-c4374d1f478acb779a3d1f1c5dc81d9c)