java中通过找女朋友的例子来讲解&&短路与和&与、||短路或和|或的区别

&&短路与和&与

你对未来的女朋友有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);

	}

运行结果如下:

猜你喜欢

转载自blog.csdn.net/czh500/article/details/114989943