通过看图 得知 & 和 && ,|和|| 对运算结果并无影响
& 和 && 只要有false结果就是false
可以理解为false是0,true是1
逻辑与就是乘法
任何数乘0都是0
同理
把 逻辑或当成加法
0和1相加
只要有true 结果就是true (1+1=1)
那么短路凭我自己的认为就是只要前者满足,后者对结果无影响,就不执行后者的代码。
在if else语句中 从左到右执行 左边是前者 右边是后者
class VariableTest6{
public static void main(String[] args){
// 区分 & 与 &&
//相同点1: &和 && 运算结果相同
// 相同点2: 当符号左边是true时候,二者都会执行右边的运算
// 不同点: 当符号左边是false时候,&继续执行右边 &&不运行
boolean b1 = true;
int num1 = 10;
b1 = false;
if(b1 & (num1++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println(num1);
boolean b2 = true;
b2 = false;
int num2 = 10;
if(b2 && (num2++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println(num2);
// ***************************
// 区分 | 与 ||
//相同点1: |和 || 运算结果相同
// 相同点2: 当符号左边是false时候,二者都会执行右边的运算
// 不同点: 当符号左边是true时候,|继续执行右边 ||不运行
boolean b3 = true;
int num3 = 10;
if(b3 | (num3++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println(num3);
boolean b4 = true;
int num4 = 10;
if(b4 || (num4++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println(num4);
// 总结 短路时前者已经可以满足结果,就不执行后面
}
}