&与&&,|与||的区别

&(与)、|(或)为位运算符,在Java中是也能做逻辑运算符。
&与&&的区别,先通过以下代码进行比较说明

&

int x = 3,y = 4; boolean b1 = (x++ == 3 & y++==4); //x++==3,x直接与3比较,true,后面继续运行y++==4,同理true,y=5 System.out.println("x:" + x);
System.out.println("y:" + y);
System.out.println(b1);

输出结果:x:4
                 y:5
                 true

&&
 
int x = 3,y = 4;
boolean b1 = (x++ == 3 && y++==4); //x++ ==3,x直接与3比较,true,再x++,x=4,后面继续运行y++==4,同理true,y=5 System.out.println("x:" + x);
System.out.println("y:" + y);
System.out.println(b1);

输出结果:x:4
                 y:5
                 true

&

int x = 3,y = 4; boolean b1 = (++x == 3 & y++==4); //x先+1,再比较3,++x=3为false,后面继续运行,所以y++ ==4为false,y=5
System.out.println("x:" + x);
System.out.println("y:" + y); System.out.println(b1);

输出结果:x:4
                 y:5
                 false

&&

 
int x = 3,y = 4; boolean b1 = (++x == 3 & y++==4); //x先+1,再比较3,++x==3为false,后面语句不运行,所以y=4
System.out.println("x:" + x);
System.out.println("y:" + y);
System.out.println(b1);

输出结果:x:4
                 y:4
                 false

由此可见,&所连接的语句,无论是true还是false,都会继续运行后面的语句,而&&所连接的语句,如果判断到一个false,后面的语句不运行。所以&&也叫短路运算符。

同理,|(或) 和 ||,运算符,|所连接的语句都需要进行运行判断,||所连接的语句,一旦判断到一个true,则不运行接下来的语句。所以||也是短路运算符。

就效率而言,短路运算符要优于一般逻辑运算符。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值