学习任务:

视频学习双与和双或的短路功能

动手测试双与的短路功能

动手测试双或的短路功能

双与运算符&&比单与&多了一个与,&&具有短路功能,&没有短路功能,&&是自左向右结合,先计算左边的关系表达式,如果是false则不再计算右边,因为只要有一个flase说明表达式的值为false,就无需计算右边的表达式了,这叫短路现象。

如下程序:

int a = 3;
int b = 4;
int c = 5;
//&& 只要有一个false则整个表达式的值为false,先计算a>b结果为false,不再计算a>c的值。
System.out.println((a > b) && (a > c));

a>b为假,a>c不再计算。

总结:如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

一个例子:

/**
 * 	逻辑运算符短路测试
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class OperatorDemo8 {
	public static void main(String[] args) throws InterruptedException {
		int x = 3;
		int y = 4;
		//如果使用&则会分别计算左边和右边关系表达式,x和y的值都会加1
		boolean b1 = ((++x == 3) & (y++ == 4));
		System.out.println("x:"+x);
		System.out.println("y:"+y);
		System.out.println(b1);
		
		int j = 3;
		int k = 4;
		//如果使用&则会分别计算左边和右边关系表达式,j和k的值都会加1
		boolean b2 = ((++j == 3) && (k++ == 4));
		System.out.println("j:"+j);
		System.out.println("k:"+k);
		System.out.println(b2);
	}
}

结果:

===第一部分测试===
4
5
false
===第二部分测试===
4
4
false

双或||和双与&&类似,也具有短路现象,由于||的两个操作数只要有一个为true则整个表达式的值为true,所以先计算左边的表达式,如果为true则不再计算右边表达式的值,这是它的短路现象。

例子:

/**
 * 	逻辑运算符短路测试
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class OperatorDemo7 {
	public static void main(String[] args) throws InterruptedException {
		int a = 3;
		int b = 4;
		int c = 5;
		
		//||双或
		System.out.println((a > b) || (a > c)); //false || false = false
		System.out.println((a > b) || (a < c)); //false || true = true
		System.out.println((a < b) || (a > c)); //true || false = true
		System.out.println((a < b) || (a < c)); //true || true = true
		System.out.println("-------------------");
		
		int x = 3;
		int y = 4;
		//如果使用|则会分别计算左边和右边关系表达式,x和y的值都会加1
		//boolean b1 = ((x++ == 3) | (y++ == 4));
		//如果使用||由于具有短路功能,当左边为true则不再计算右边
		boolean b1 = ((x++ == 3) || (y++ == 4));
		System.out.println(x);
		System.out.println(y);
		System.out.println(b1);
	}
}

结果:

false
true
true
true
-------------------
4
4
true

提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题