4-5 布尔值、反向运算符、比较运算符与逻辑运算符

4-5-1 布尔值

在设计程序流程控制时,会使用到布尔值,第5章中会有完整的应用。布尔值只有两种,一种是true,另一种是false。

程序实例ch4_14.java:列出布尔值的应用。

执行结果

4-5-2 反向运算符

反向运算符符号是!,通常会搭配布尔值变量使用,可以获得反效果的布尔值,当然这个运算符主要也是要配合程序流程控制。

程序实例ch4_15.java:反向运算符的应用。

执行结果

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:比较运算符的应用。

执行结果

4-5-4 逻辑运算符

逻辑运算符有三个,如下所示。

(1)&&或是&;

相当于and运算,可参考下表。

(2)||或是|;

相当于or运算,可参考下表。

(3)^。

相当于XOR,如果操作数值相同返回false,否则返回true,可参考下表。

程序实例ch4_17.java:逻辑运算符&&的应用。

执行结果

读者可能会感到奇怪,为何Java提供了&&(或||)逻辑运算符,还要提供好像功能完全相同的&(或|)逻辑运算符?虽然它们的运算结果相同,但是过程还是有差异,使用&&(或||)时,如果&&(或||)左边的运算符可以决定结果,程序会忽略右边运算符的操作。在Java专业术语中又将&&(或||)符号称为逻辑运算短路符号。

程序实例ch4_18.java:列出&&和&运算时的差异。

执行结果

对于第5行而言,由于&&左边的a是false已经可以预知运算结果了,所以将省略右边的i++运算,所以第6行列出结果i等于5。对于第7行而言,由于是使用&运算符,因为左右两边的操作数均需执行完毕,所以会执行到i++,第8行列出的结果是i等于6。

程序实例ch4_19.java:逻辑运算符||的应用。

执行结果

程序实例ch4_20.java:逻辑运算符^的应用。

执行结果

4-5-5 再谈三元运算符

在4-1-7节中有说明三元运算符的意义,当时尚未介绍比较运算符(4-5-3节),所以无法以实例说明,下列是三元运算符的公式:

表达式?X:Y

程序实例ch4_21.java:三元运算符的应用,分别列出较大值与较小值。

执行结果