逻辑与(&)运算符只有当两边的操作数都是 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
}
}