逻辑与(&)运算符只有当两边的操作数都是 true 的时候,
结果才是 true,只要有一个是 false,结果必然是 false。
以上程序逻辑左边的表达式(m > n)显然结果是 false,
通过左边的表达式已经可以得出结果是false 了,右边的
表达式没有执行的必要,那我们来看一下右边的表达式
有没有执行,只要输出 n 就可以了断定,与门就后面需要执行,逻辑与后面不需要执行
public class LogicalOperatorTest01 { public static void main(String[] args){ System.out.println(5>3&5>4);//true System.out.println(5>100|5>4);//true System.out.println(!(5>3));//false System.out.println(!(5<3));//true System.out.println(true&true);//true System.out.println(true&false);//false System.out.println(true|false);//true System.out.println(!false);//true System.out.println(!true);//false System.out.println(true^true);//false System.out.println(true^false);//true System.out.println(false^false);//false System.out.println("---------"); //重点研究&和&&的区别 int x = 100; int y = 98; int z = 99; System.out.println(x>y&x>z);//true System.out.println(x>y&&x>z);//true int m = 99; int n = 100; System.out.println(m>n&m>n++);//false /*逻辑与(&)运算符只有当两边的操作数都是 true 的时候, * 结果才是 true,只要有一个是 false,结果必然是 false。 * 以上程序逻辑左边的表达式(m > n)显然结果是 false, * 通过左边的表达式已经可以得出结果是false 了,右边的 * 表达式没有执行的必要,那我们来看一下右边的表达式 * 有没有执行,只要输出 n 就可以了断定*/ System.out.println("n="+n);//101 int k = 99; int f = 100; System.out.println(k>f&&k>f++);//false //右边表达式不再执行,发生短路 System.out.println("f="+f);//100 } }