欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

&和&&的区别

程序员文章站 2022-03-01 17:16:44
...

相同点:&和&&都可以用作逻辑与的运算符,表示逻辑与(and)。

不同点:

(1)&&具有短路的功能,而&不具备短路功能。

(2)二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路与运算,是因为如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。而&就算左边的表达式为false,也会计算右边的表达式。

int i = 1;
System.out.println((i>1)&(3>i++));//false
System.out.println(i);//2

System.out.println((i>1)&&(3>i++));//false
System.out.println(i);//1      其中3>i++被短路了

(3)&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如:0x31 & 0x0f的结果为0x01。

总结:

&运算符有两种用法:(1)按位与;(2)逻辑与。

&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算,是因为如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。

注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。