首先名称是不同的:
&&逻辑与||逻辑或它们都是逻辑运算符
& 按位与| 按位或它们都是位运算符
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
&&逻辑与 也叫做短路与 因为只要当前项为假,它就不往后判断了,直接认为表达式为假
||逻辑或 也叫做短路或 因为只要当前项为真,它也不往后判断了,直接认为表达式为真
Java中逻辑运算短路的理解:
短路 就是知如果左侧的表达式能确定运算后的结果,则不再计算右侧的表达式。
如(1>2)&&(2<3) 明明左侧已经为假 了 ,我 不用计算右侧我一定知道 此表达是为假,这样 就好似物理中的电流,当某处短路时,电流直接从一条路通过,而不再管另一条路。
看个例子:
public class Logic{
public static void main(String[] args){
int a = 1
int b = 1
if(a<b&&b<a++){
System.out.println(a>b&true)
System.out.println(a)
System.out.println("this's in my control")
else{
System.out.println("that's impossible")
System.out.println(a)
此处由于a<b为假 ,所以 后面的b<a++不会执行
此处的结果为
that's impossible
若假设a的初值为0,此时a<b成立,这时就要计算后面的值了
结果应该为和上面一样。
&&是逻辑与的意思。只要第一个条件不满足,后面条件就不再判断
例如:
public class Test {
public static void main(String[] args) {
if ((5 == 6) && (100 / 0 == 0)) {
System.out.println("运算没有问题。")
} else {
System.out.println("没有报错")
}
}
}
运行结果:
||:称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。
例如:
public class Test {public static void main(String args[]) {
if ((4 > 5) || (5 > 4)) {
System.out.println("TRUE")
} else {
System.out.println("FALSEs")
}
}
}
运行结果: