Java &&和&的区别
&& 逻辑与,|| 逻辑或 称为逻辑运算符
& 按位与,| 按位或 称为位运算符
if(a==1&&b==2) 这是说既要满足a=1也要满足b=2
if(a==1||b==2) 这是说或者满足a=1或者要满足b=2
而a&b或者a|b则是二进制的与或运算
&同为1时为1,否则为0
|同为0时为0,否则为1
3&5则
0011
&0101
0001
等于1
3|5则
0011
|0101
0111
等于7
&&逻辑与 也叫做短路与 因为只要当前项为假,它就不往后判断了,直接认为表达式为假
||逻辑或 也叫做短路或 因为只要当前项为真,它也不往后判断了,直接认为表达式为真
例题:
下面代码的输出结果是什么?
-
class Test {
-
public static void main(String[] args) {
-
int a = 3;
-
int b = 4;
-
if ((a>b&(a++)>b&&(--b)<a)|(b++)<=(a--)) {
-
System.out.println("判断结果为true, a=" + a + ",b=" + b);
-
} else {
-
System.out.println("判断结果为false, a=" + a + ",b=" + b);
-
}
-
}
-
}
A.判断结果为true, a=3,b=5
B.判断结果为true, a=3,b=4
C.判断结果为false, a=3,b=5
D.判断结果为false, a=4,b=4
如果忽略&和&&的区别,很可能得到答案B.
但正确答案其实是A.
解析:短路与&&只要当前项为F,直接得出结果为F,不进行后面的运算(一假必假)
短路或 | | 只要当前项为T,直接得出结果为T,不进行后面的运算(一真必真)
短路与&&和短路||都提高了逻辑表达式的计算效率.
http://www.360doc.com/content/16/0716/22/16920390_576148549.shtml
https://blog.csdn.net/sinat_33033041/article/details/75557404
上一篇: Activity之间传递数据
下一篇: 中国标准时间转换为yyyy-MM-dd
推荐阅读
-
Java自学-集合框架 HashMap和Hashtable的区别
-
java 抽象类和接口的区别详细解析
-
Java overload和override的区别分析
-
Objective-C 获取NSDate对象的年月日时分秒 && NSCalender的使用
-
Java中parseInt()和valueOf(),toString()的区别
-
Java日期时间API系列9-----Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别
-
Android.mk的用法和基础 && m、mm、mmm编译命令
-
java中的sleep()和wait()的区别
-
Java的BIO,NIO和AIO的区别于演进
-
Java中成员变量与局部变量的区别、对象类型作为方法的参数和方法的返回值