布尔类型
布尔类型:boolean,此类型变量只能取两个值:true和false。if语句、for循环、while循环等很多地方都会使用到布尔类型。boolean变量的默认值为false,即定义一个boolean变量但没给它赋值时,它的初始值为false。
逻辑运算符
boolean变量的操作运算往往需要使用到逻辑运算符,它的结果也是一个布尔值(true或false)。通过逻辑运算符,可以对boolean变量进行操作运算。
逻辑运算符 | Java表示法 | 表达式 | 结果 |
AND | && | true && true | true |
true && false | false | ||
false && true | false | ||
false && false | false | ||
OR | || | true || true | true |
true || false | true | ||
false || true | true | ||
false || false | false | ||
NOT | ! | ! true | false |
! false | true |
其中AND运算符和OR运算符是双目运算符,两者优先级相同,运算时从左往右进行。NOT运算符较为特殊,是单目运算符,它更像是负数前面的负号。NOT运算符的优先级极高,仅次于括号。在组合运算时,可通过括号改变逻辑运算的顺序。
短路运算
AND运算符的特点为有假则假,全真则真,OR运算符的特点为有真则真,全假则假。进行AND运算时,若求得前面表达式的值为false,此时无论后面的表达式取何值,运算结果均为false。因此可忽略后面的计算,这就是短路运算。同理,进行OR运算时,若求得前面表达式的值为true,此时无论后面的表达式取何值,运算结果均为true。
实战演习
运算优先级
class test
{
public static void main(String[] args) throws Exception {
//在此编写你的代码
System.out.println(false && false || true);
System.out.println(false && (false || true));
}
}
AND运算符与OR运算符的优先级相同,默认运算顺序为从左往右。当有括号存在时,优先进行括号运算。
输出结果为:
true
false
短路运算
class test
{
public static void main(String[] args) throws Exception {
//在此编写你的代码
int i=0;
if(true || ++i > 0)
System.out.println(i);
if(false || ++i > 0)
System.out.println(i);
}
}
进行OR运算时,有真则真。因此当前面的表达式出现真值时,后面的表达式不进行运算,即被短路。故此,i 不进行自增操作。只有当前面的表达式的值为假时,后面的表达式才进行运算。此时 ,i 进行自增操作。
输出结果:
0
1
总结
boolean类型的变量是一种经常被使用到的变量类型,常常出现在各种条件判断中。对boolean变量进行操作运算往往需要使用到逻辑运算符,其中AND运算符遵循有假则假,全真则真的原则,OR运算符遵循有真则真,全假则假的原则。根据运算符的运算原则,存在对应的短路运算。