Java逻辑运算符

逻辑运算符用于操作两个布尔型的变量或常量。主要有以下几个。

  1. &&:与,前后两个操作数必须都是true才返回true,否则返回false。
  2. &:不短路与,作用与&&相同,但不会短路。
  3. ||:或,只要两个操作数中有一个是true,就可以返回true,否则返回false。
  4. |:不短路或,作用与||相同,但不会短路。
  5. ^:异或,当两个操作数不同时才返回true,如果两个操作数相同则返回false。

下面代码示范了各逻辑运算符的执行示意。

//5>3返回true,'6'转换为整数54,'6'>10返回true,求与后返回true。
System.out.println(5>3 && '6'>10);
//4>=5返回false,'c'>'a'返回true。求或后返回true。
System.out.println(4>=5||'c'>'a');
//4>=5返回false,'c'>'a'返回true。两个不同的操作数求异或返回true。
System.out.println(4>=5^'c'>'a')

对于|与||的区别,参考如下代码

//定义变量a、b,并为两个变量赋值
int a = 5;
int b =10;
//对a > 4 和b++ > 10 求或运算
if(a > 4 | b++ > 10){
     //输出a的值是5,b的值是11
     System.out.println("a的值是:"+a+",b的值是::"+b);
}

执行上面程序,看到输出a的值为5,b的值为11,这表明b++>10表达式得到了计算,但实际上没有计算的必要,因为a>4已经返回了true,则整个表达式一定返回true。

再看如下代码,只是将上面示例的不短路逻辑或改成了短路逻辑或。

//定义变量a、b,并为两个变量赋值
int c = 5;
int d =10;
//对c > 4 || d++ > 10 求或运算
if(c > 4 || d++ > 10){
     //输出c的值是5,d的值是10
     System.out.println("c的值是:"+c+",d的值是::"+d);
}

上面代码执行的结果是:c的值为5,而d的值为10。
对比两段代码,后面的代码仅仅将不短路或改为短路或,程序最后输出的d值不再是11,这表明表达式d++>10没有获得执行的机会。因为对于短路逻辑或 || 而言,如果第一个操作数返回true,||将不再对第二个操作数求职,直接放回true。不会计算d++>10这个逻辑表达式,因而d++没有获得执行的机会。因此,最后输出的d值为10。而不短路或 | 总是执行前后两个操作数。
&与&&的区别与此类似:&总会计算前后两个操作数,而&&先计算左边的操作数,如果左边的操作数为false,则直接返回false,根本不会计算右边的操作数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值