![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=1739252340-5a4mdaOrOuddI0T2HLm9NdxLxZKRyBdm-0-a8c459a5299204cd018eca8717971f08)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P50_527333.jpg?sign=1739252340-5swMqV8biFkEoNWzlEwhzMpn9JWhyZVg-0-c7b710fd0123c321ac230a3c28e1f7cd)
4-5-2 反向运算符
反向运算符符号是!,通常会搭配布尔值变量使用,可以获得反效果的布尔值,当然这个运算符主要也是要配合程序流程控制。
程序实例ch4_15.java:反向运算符的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P50_758004.jpg?sign=1739252340-dVmoHpi9pEW9s2CMm5KhaEIeIQe15qe6-0-634776f3be90e2bf38cf01b3f1fb8a9a)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P50_527343.jpg?sign=1739252340-q0Y3vaG0KLemqO5qirHGDrpWCWzrmNTl-0-604b24499a87841f8ab0494ca454231e)
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=1739252340-3McNKU0tZV6JlV5m3XVr1eoTlflATMta-0-be9f1128e1cbf6c8aeeb51493c81772f)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P51_527752.jpg?sign=1739252340-KrPMXqvisRWFMlYnfQqHcZR6xU2ovSkC-0-84435c453eb9d262a3c169db4bd363dc)
4-5-4 逻辑运算符
逻辑运算符有三个,如下所示。
(1)&&或是&;
相当于and运算,可参考下表。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-T51_757900.jpg?sign=1739252340-xLx6YD532IedxUnsJxBjSZ0FwPodvZmi-0-b5f879c71fb2f87efbcb8184ee4bad66)
(2)||或是|;
相当于or运算,可参考下表。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-T51_757901.jpg?sign=1739252340-Xd86hlj5JTkdBcsfiDvQNXpr7PoCumaS-0-bb4d253bba4fb5a1598a5ad4bc0c108e)
(3)^。
相当于XOR,如果操作数值相同返回false,否则返回true,可参考下表。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-T51_757902.jpg?sign=1739252340-ea1Hf71jsBQuH1yEcPyQSDuXQ9js4CyR-0-5b24f430abecf89a04558d9618ae14c8)
程序实例ch4_17.java:逻辑运算符&&的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P51_528003.jpg?sign=1739252340-C4nwBXqQNsAETOBsZA8ZSsa54XDp41ZB-0-0bbbac2d7212473624bb24497a341526)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P51_528009.jpg?sign=1739252340-6XLfYEMTuodfcMvkueekVDUUbGQr7u8s-0-e9e0f784756ad4567a56f2754852b463)
读者可能会感到奇怪,为何Java提供了&&(或||)逻辑运算符,还要提供好像功能完全相同的&(或|)逻辑运算符?虽然它们的运算结果相同,但是过程还是有差异,使用&&(或||)时,如果&&(或||)左边的运算符可以决定结果,程序会忽略右边运算符的操作。在Java专业术语中又将&&(或||)符号称为逻辑运算短路符号。
程序实例ch4_18.java:列出&&和&运算时的差异。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528417.jpg?sign=1739252340-AfXeanzvSUdILGNHuiDj7VCUEW8jNORr-0-bf53cd4c64c5891b4c0c1e364c9aebc4)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_757905.jpg?sign=1739252340-12nTSNLO0rQylYM3JWVB9ddYQUiHof1n-0-0a5cf4186a6566343fc0c781ea8ee8cf)
对于第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=1739252340-YRMJNy2ej959rJbqv5oAbufo0HE26zVH-0-fe8d51f4f86493321e0008b8d6986272)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528432.jpg?sign=1739252340-PFoOi9qVT5D6FCEFK0q73H5cRXVbDyD2-0-5f7effddf39cbdf4356ecd3ca16ba36e)
程序实例ch4_20.java:逻辑运算符^的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528435.jpg?sign=1739252340-agsZmuTVRNV2Db4FopyodhzCS94svXDd-0-6b42456eb25881c2b04add73582c83a1)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528441.jpg?sign=1739252340-Yn4NcXjrkAG7gyHB3481Sak1vDGtkIUN-0-05e3d4456dbb7a3b30b55ae586c596de)
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=1739252340-NYBBpQCAnnTCC7SikBAngdSvVGYeB8DU-0-503a762e9bccaf5c933318320c8269f3)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P52_528451.jpg?sign=1739252340-ORtcz54YDc9s4J9T8B0u3IhmXojKkxBw-0-dfa9e11745bd2da0f8cd0834e3b4a6cf)