逻辑运算符:
& 逻辑与(可以翻译成并且)<br /> | 逻辑或(可以翻译成或者)<br /> ! 逻辑于(取反)<br /> &&短路与()<br /> ||短路或<br /> <br />用普通话描述的话:100 大于 99 并且 100 大于 98 ,有道理<br />用代码描述的话:100 > 99 & 100 > 98 -->true<br />
非常重要:
逻辑运算符两边要求都是布尔类型,并且最终的运算结果也是布尔类型。<br /> 这是逻辑运算的特点。<br /> <br /> 100 & true 不行,语法错误。<br /> 100 & 200 不行,没有这种语法。<br /> true & false 这样可以。<br /> <br /> 100 > 90 & 100 > 101 --> false<br /> <br /> & 两边都是true,结果才是true<br /> | 有一边是true,结果就是true
public class OperatorTest03{ public static void main(String[] asge){ // 对于逻辑与&运算符来说,只要有一边是false,结果就是false。 // 只有两边同时为true,结果才是true。 System.out.println(true & true); // true System.out.println(true & false); // false System.out.println(false & false; // false System.out.println(100 > 90 & 100 > 101); // false int a = 100; int b = 101; int c = 90; System.out.println(a < b & a > c); // true // 对于逻辑或呢? // 只要有一边是true,结果就是true。 System.out.println(a < b | c > b); // true System.out.println(true | false); // true System.out.println(true & true); // true System.out.println(false | false); // false System.out.println(!false); // true System.out.println(!true); // false // 注意:这里需要加一个小括号。 System.out.println(!(a > b)); // true /* 关于短路与 &&,短路或 || 其中重点学习短路与,短路或照葫芦画瓢。 短路与 && 和逻辑与 & 有什么区别? 首先这两个运算符的运算结果没有任何区别,完全相同。 只不过“短路与&&”会发生短路现象。 什么是短路现象呢? 右边表达式不执行,这种现象叫做短路现象。 什么时候使用&&,什么时候使用& ? 从效率方面来说,&&比&的效率高一些。 因为逻辑与&不管第一个表达式结果是什么,第二个表达式一定会执行。 以后的开发中,短路与&&和逻辑与还是需要同时并存的。 大部分情况下都建议使用短路与&& 只有当既需要左边表达式执行,又需要右边表达式执行的时候,才会选择逻辑与&。 */ System.out.println(true & true); // true System.out.println(true & false); // false System.out.println(false & false); // false System.out.println(true && true); // true System.out.println(true && false); // false System.out.println(false && false); // false //接下来需要理解一下什么是短路现象,什么时候会发生“短路”。 int x = 10; int y = 11; // 逻辑与&什么时候结果为true(两边都是true,结果才是true) System.out.println(x > y & x > y++); // 左边的 x > y 表达式结果已经是false了,其实整个表达式的结果已经确定是false了,按道理来说右边的表达式不应该执行。 // 通过这个测试得出:x > y++ 这个表达式执行了。 System.out.println(y); // 12 // 测试短路与&& int m = 10; int n = 11; // 使用短路与&&的时候,当左边的表达式为false的时候,右边的表达式不执行。 // 这种现象被称为短路现象 System.out.println(m > n && m > n++); System.out.println(n); // 11 // 问题: 什么时候发送短路或现象? // || 短路或 // “或”的时候只要有一边是true,结果就是true。 // 所以,左边的的表达式结果是true的时候,右边的表达式不需要执行,此时会短路。 }}