内容正文:
03
条件判断
任务目标
1. 能够正确书写 Java 的关系表达式和逻辑表达式, 为选择结构程序设计打好基础;
2. 会计算关系表达式和逻辑表达式的值;
3. 能够变“抽象” 为“具体”, 具有举一反三、 自己获取知识的能力。
一、关系运算符和关系表达式
(一) 关系运算符
关系运算符用来比较两个操作数的值,其运算结果是布尔型值 true 或 false。关系运算符都是双目运算符, Java 语言一共提供了 6 个关系运算符。
Java 中任何类型的数据(包括基本类型和构造类型)都可以使用 = = 和 != 来比较是否相等。关系运算符常与条件运算符一起使用,作为流程控制语句的判断条件。
使用关系运算符时,应注意其优先级。
( 1)“<”“<=”“>”“>=”这四个运算符的优先级相同,“ = =”和“! =”的优先
级相同。前 4 个运算符的优先级高于后两个运算符的优先级。
( 2)关系运算符的优先级低于算术运算符而高于赋值运算符。它们的结合性是“自左至右”。
例如:a!=b+c 等价于 a!=( b+c); a=b>c 等价于 a=( b>c)。
(二)关系表达式
关系表达式就是用关系运算符将两个或两个以上运算对象连接起来的式子。其中,运算对象可以是常量、变量或表达式。
关系表达式的运算结果有两种:“真”或“假”。在 Java 语言中用 true 表示“真”,用 false 表示“假”。例如: 3*5>6*2,表达式的执行结果为 true。
二、逻辑运算符和逻辑表达式
(一)逻辑运算符
逻辑运算符用来进行逻辑运算,操作数类型是布尔型数据,运算结果也是布尔型。
使用逻辑运算符时,应注意它的优先级和结合性。
( 1)逻辑运算符从高到低的优先次序为: !(逻辑非) → &&(逻辑与)→ ||(逻辑或)。
( 2)逻辑非“!”的结合方向是“自右至左”,逻辑与“&&”和逻辑或“||”的结合方向是“自左至右”。
( 3)常见运算符的优先次序如图 2-2 所示。
(二)逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起来的式子称为逻辑表达式。逻辑表达式的值也有两种,即“真”和“假”。有一点需要指出,在逻辑表达式的求值过程中,存在“短路”行为。
(1)在求解 a&&b&&c 的值时,只有 a 的值是真时,才会计算 b 的值;只有 a 和 b均为真时,才会计算 c 的值。如果 a 为假,则整个表达式的值已经确定为假,就不会继续计算 b 和 c 的值。
(2)在求解 a||b||c 的值时,只有 a 为假时,才会计算 b 的值;只有 a 和 b 均为假时,才会计算 c 的值。如果 a 是真,则整个表达式的值已经确定为真,就不会计算 b 和 c的值。
三、位运算符
(一)按位运算符
按位运算符包括有四种,其使用方法和功能如表 2-11 所示。
逻辑与、或和按位与、或的比较
相同点:都能参与逻辑运算,按位与或完全可以替代逻辑与或。
区别:按位与或可以参与位运算,逻辑与或只能参与逻辑运算;逻辑与或可以“短路”,按位与或不能“短路”。
逻辑与的短路操作,先计算左边的操作数,如果左操作数为 false,此时已经可以得到整个表达式的值为 false,则不会计算右操作数;
例如: a>b&&c<d 一旦 a>b 为假, c<d 不再计算。
逻辑或的短路操作,先计算左边的操作数,如果左操作数为 true,此时已经可以得到整个表达式的值为 true,则不会计算右操作数;
例如: a>b||c<d 一旦 a>b 为真, c<d 不再计算。
(二)移位运算符
移位运算符包括三种,其使用方法和功能如表 2-12 所示。
移位运算适用数据类型: byte、 short、 char、 int、 long 对低于 int 型的操作数将先自动转换为 int 型再移位。
四、其他运算符
(1)“? :”运算符是唯一的一个三元运算符,它的形式为:
a?b:c
程序运行时先判断 a,如果 a 为 true,则返回 b 的值,否则返回 c 的值。例如:
int a, b=5, c=7;
a = (b>c)?b:c; //a 值为 7
可见,利用第二条语句可以自动判断 b 和 c 的大小,并返回其中较大的值。
(2)“[]”运算符用来定义数组,创建数组,或访问数组元素。例如:
int[] aValue = new int[12];
aValue[3] = 12;
(3)“.”运算符用来访问对象的成员函数或成员变量。
(4)“(参数 1,参数 2,……)”运算符用于向方法中传递参数,这部分内容也将在下一单元说