Java逻辑运算符(&&、||和!)
逻辑运算符是对布尔型变量进行运算,其结果也是布尔型,具体如表 1 所示。
运算符 | 用法 | 含义 | 说明 | 实例 | 结果 |
---|---|---|---|---|---|
&& | a&&b | 短路与 | ab 全为 true 时,计算结果为 true,否则为 false。 | 2>1&&3<4 | true |
|| | a||b | 短路或 | ab 全为 false 时,计算结果为 false,否则为 true。 | 2<1||3>4 | false |
! | !a | 逻辑非 | a 为 true 时,值为 false,a 为 false 时,值为 true | !(2>4) | true |
| | a|b | 逻辑或 | ab 全为 false 时,计算结果为 false,否则为 true | 1>2|3>5 | false |
& | a&b | 逻辑与 | ab 全为 true 时,计算结果为 true,否则为 false | 1<2&3<5 | true |
&& 与 & 区别:如果 a 为 false,则不计算 b(因为不论 b 为何值,结果都为 false)
|| 与 | 区别:如果 a 为 true,则不计算 b(因为不论 b 为何值,结果都为 true)
注意:短路与(&&)和短路或(||)能够采用化的计算方式,从而提高效率。在实际编程时,应该优先考虑使用短路与和短路或。
结果为 boolean 型的变量或表达式可以通过逻辑运算符结成为逻辑表达式。逻辑运算符 &&、|| 和 !按表 2 进行逻辑运算。
a | b | a&&b | a||b | !a |
---|---|---|---|---|
true | true | true | true | false |
false | true | false | true | true |
true | false | false | true | false |
false | false | false | false | true |
逻辑运算符的优先级为:!运算级别最高,&& 运算高于 || 运算。!运算符的优先级高于算术运算符,而 && 和 || 运算则低于关系运算符。结方向是:逻辑非(单目运算符)具有右结性,逻辑与和逻辑或(双目运算符)具有左结性。
下面是一些使用逻辑运算符的示例。
x>0 && x<=100 // 行语句
y%4==0 || y%3==0 // 第二行语句
!(x>y) // 第三行语句
其中,行语句用于判断 x 的值是否大于 0 且小于或等于 100,只有两个条件同时成立结果才为真(true)。第二行语句用于判断 y 的值是否能被 4 或者 3 整除,只要有一个条件成立,结果就为真(true)。第三行语句先比较 x 和 y,再将比较结果取反,即如果 x 大于 y 成立,则结果为假(false),否则为真(true)。