1、&&,||是逻辑运算符,而&,|是位运算符。
2、&&,||只能对false和true进行运算,&,|既可对数值进行运算有可对false和true进行运算
例如:
if (a==1 && b==2) //既要满足a=1,也要满足b=2
if (a==1 || b==2) //只要满足a=1,b=2中的一个既可
//最后得到的值是false或true,这就是只能对false和true进行运算
int x=10;
int y=20;
if(((x=0)==0)|((y=0)==0)){ //true|true->1|1
System.out println(y); //输出y值为0
}
//a&b,a|b是a,b二进制的位运算
3&5;//0011&0101->0001(同1为1,否则为零)
3|5;//0011|0101->0111(遇1则1)
//这就是&,|还可对数值进行运算
3、位运算不会短路
什么是逻辑运算短路现象?
例如:
int a=20,b=20;
if(((a=0)==0)||((b=0)==0)){ //a=0已经满足了,就不再执行b=0了,即为短路
System.out.println(b);//所以此时输出b为20
}
而位运算符不会出现短路现象
例如:
int a=20,b=20;
if(((a=0)==0)|((b=0)==0)){ //true|true->1|1->所以执行b=0
System.out.println(b);//此时输出b为0
}