&&短路与和&与
你对未来的女朋友有2个条件:
1.腿细长细长
2.漂亮(颜值高)
&:你看了看那妹子的腿,好短,然后你再看看脸美不美
&&:你看了看那妹子的腿,好短,然后你就直接转身就走了(不再看那妹子的脸了)
||短路或和|或
你对未来的女朋友有2个条件:
1.富(有钱)
2.美(颜值高)
只要满足其中一个就行;
|:第1个满足了,那么再看看第2个是否满足,如果第2个满足,那就更好了,如果第2个不满足,那也无所谓(反正第1个已经满足了嘛)
||:第1个满足了,知足了,不再看第2个是否满足。
上面两个例子告诉我们一个道理,这个世界只看钱看脸,什么感情不感情的,都是屁!
言归正传
案例1.&&短路与和&与
public static void main(String[] args) {
//在实际开发中,基本上用的都是短路与和短路或,很少有直接用与和或的
//在实际开发中,||和&&用的比较多,&和|用的很少
//对于与来说,要求所有的条件都判断,使用短路与如果第一个条件为false,则后面的条件将不再判断。
//对于或来说,要求所有的条件都判断,使用短路或如果第一个条件为true,则后面的条件将不再判断。
/*
这是一种编译的优化
因为任何布尔值和false进行与运算,结果都是false,所以编译器只要知道第一个是false,后面就没必要再运算了
同样的,任何布尔值和true进行或运算,结果都是true,所以只要知道第一个是true,后面也没必要运算了
*/
//&&短路与,&与
int a = 5;
int b = 8;
System.out.println("!!!!!!" + "a=" + a + ",b=" + b);
if (a < 2 && ++b < 20) {//&&具有短路的效果。左边是false,右边就不执行
System.out.println("######" + "a=" + a + ",b=" + b);
}
System.out.println("*******" + "a=" + a + ",b=" + b);
int e = 5;
int f = 8;
System.out.println("!!!!!!" + "e=" + e + ",f=" + f);
if (e < 2 & ++f < 20) {//&的效果。左边是false,右边继续执行
System.out.println("######" + "e=" + e + ",f=" + f);
}
System.out.println("*******" + "e=" + e + ",f=" + f);
}
运行结果如下:
//在实际开发中,基本上用的都是短路与和短路或,很少有直接用与和或的
//在实际开发中,||和&&用的比较多,&和|用的很少
//对于与来说,要求所有的条件都判断,使用短路与如果第一个条件为false,则后面的条件将不再判断。
//对于或来说,要求所有的条件都判断,使用短路或如果第一个条件为true,则后面的条件将不再判断。
/*
这是一种编译的优化
因为任何布尔值和false进行与运算,结果都是false,所以编译器只要知道第一个是false,后面就没必要再运算了
同样的,任何布尔值和true进行或运算,结果都是true,所以只要知道第一个是true,后面也没必要运算了
*/
案例2.||短路或和|或
public static void main(String[] args) {
//||短路或,|或
int x = 5;
int y = 8;
System.out.println("!!!!!!" + "x=" + x + ",y=" + y);
if (x < 6 || ++y < 20) {//||具有短路的效果,左边为true,右边不执行
System.out.println("######" + "x=" + x + ",y=" + y);
}
System.out.println("*******" + "x=" + x + ",y=" + y);
int z = 5;
int w = 8;
System.out.println("!!!!!!" + "z=" + z + ",w=" + w);
if (z < 6 | ++w < 20) {//|的效果,左边为true,右边继续执行
System.out.println("######" + "z=" + z + ",w=" + w);
}
System.out.println("*******" + "z=" + z + ",w=" + w);
}
运行结果如下: