java短路运算符和逻辑运算符的区别

/*
		 * 逻辑运算符——不论是什么条件都要执行左右两边代码
		 * 短路运算符——我认为在底层就是利用物理电路的“并联”和“串联”实现的
		 * 原理很简单,并联电路代表短路或(||),串联电路代表短路与(&&)。
		 * 
		 * 并联电路两个开关只要有一个开关闭合,电路就会通。
		 * 类似于短路或(||),只要有其中一个为true(开关闭合)是就不必执行右边的代码
		 * 并联电路两个开关其中有一个开关没有闭合(false),电路不会通,要继续执行右边的代码。
		 * 
		 * 串联电路(&&)原理是必须是两个开关都闭合电路才能通,所以原理可想而知咯!
		 * 左边的开关闭合(true)仍需判断右边的开关是否闭合,所会执行右边的代码。
		 * 左边的开关没有闭合(false) 不用执行右边的代码。
		 * 因为左边开关没有闭合!右边的开关无论是否闭合电路都不会通电,所以不执行右边的代码。
		 * 
		 * ——不知不觉突然回顾了那么多年前的物理课知识,多少回忆涌上心头,
		 * 记得那时候拆了好多家里的电池,到处找小灯泡去连接电路,
		 * 有时候电路短路,弄的火光闪烁...
		 */
		int a = 0;
		int b = 0;
		int c = 0;
		int d = 0;
		/*
 			flag = true

			逻辑或1
			短路或0
			逻辑与1
			短路与1
			
			flag = false
			
			逻辑或1
			短路或1
			逻辑与1
			短路与0
		 */
	    boolean flag = false;
	    
		// | 和 || 的区别
		if(flag | a++ > 10) {
			System.out.println("逻辑或" + a);
		}else {
			System.out.println("逻辑或" + a);
		}

		if(flag || b++ >10) {
			System.out.println("短路或" + b);
		}else {
			System.out.println("短路或" + b);
		}
		// & 和 && 的区别
		if(flag & c++ > 10) {
			System.out.println("逻辑与" + c);
		}else {
			System.out.println("逻辑与" + c);
		}

		if(flag && d++ >10) {
			System.out.println("短路与" + d);
		}else {
			System.out.println("短路与" + d);
		}

你可能感兴趣的