&与&&的特点:
逻辑与& 无论左边是true还是false,右边都参与运算
短路与&& 如果左边是false,右边就不运算
public static void main(String[] args)
{
int x=0;
int y=3;
if(x!=0 && y==y/x)
System.out.println("y = "+y);
}
所以该输出语句不运行,因为左边x!=0是false,if语句根本进不来,右边同时也不运算
逻辑或| 表达式两边都参与运算
短路或|| 当左边为true,右边就不再参与运算
int x = 0;
int y = 3;
if (x > 6 || y > 1 ){
System.out.println("hello");
}
因为x > 6是false,所以右边 y > 1还会继续运行,if语句进来,所以最后输出了hello.
最后总结一点:
短路与&& 如果左边是false,右边就不运算
短路或|| 当左边为true,右边就不再参与运算
以上是两种情况是反的,所以需要注意下
|