[java]&&(短路与)与&(逻辑与)之间的区别

本文详细解析了Java中逻辑运算符&与&&的区别,并通过实例演示了它们在实际应用中的不同表现,同时介绍了如何利用&&(短路与)来规避潜在的运行时错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

&与&&的区别:
&:不管左边是true还是false,右端都会进行运算。
&&:只要左端不满足条件(即为false),右端就不会进行运算。
建议运算时,多使用&&(短路与),这样一方面可以减少不必要的开销,节省计算,另一方面可以规避错误
同理可得,|(逻辑或)和||(短路或)也存在上述区别。

class Test{
	public static void main(String[] args){
	boolean a=true;
	boolean b=false;
	 int  i1=10;
	 if(b&(i1++)>0){
	System.out.println("今天天气很晴朗");
	}else{
         System.out.println("难得没有雾霾");
	}
		System.out.println(i1);
     int  i2=10;
	 if(b&&(i2++)>0){
		System.out.println("今天天气很晴朗");
	}else{
         System.out.println("难得没有雾霾");
		}
		System.out.println(i2);
}}

其运算结果如图所示:
这里插入图片描述
在if(b&(i1++)>0)中,b为false,但是&(逻辑与)还是将(i1++)>0进行运算,所以输出数值为11。
if(b&&(i2++)>0)中,b为false,使用&&(短路与),则不需要运算其右端,直接跳出判断语句,输出i2原来的值。

以下例子则可以证明,&&(短路与)可以用来规避错误:

class Test{
	public static void main(String[] args){
	boolean a=true;
	boolean b=false;
	 int  i1=10;
	 if(b&10/0==0){
	System.out.println("今天天气很晴朗");
	}else{
         System.out.println("难得没有雾霾");
	}
		System.out.println(i1);
}}

其运算结果如图:
在这里插入图片描述

由if(b&10/0=0)的后半部分(10/0==0)会导致发生错误。

class Test{
	public static void main(String[] args){
	boolean a=true;
	boolean b=false;
     int  i2=10;
	 if(b&&10/0==0){
		System.out.println("今天天气很晴朗");
	}else{
         System.out.println("难得没有雾霾");
		}
		System.out.println(i2);
}}

其运算结果如图:
在这里插入图片描述
由此可得,if(b&&10/0==0)中,&&(短路与)可以规避错误。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值