/*
A:逻辑运算符有哪些
& 与 (并且) , | 或 (或者) , !(非) , ^(异或) ,
逻辑双与&&(短路与) , 逻辑双或||(短路或)
注意事项:
a:逻辑运算符一般用于连接boolean类型的表达式或者值。
在Java中我们要表示一个数大于3并且小于6 ,不可以写成3<x<6,应该写成 x>3 & x<6 。
b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
算术表达式:a + b
比较表达式:a == b
赋值表达式: int a = 10
什么叫 布尔类型表达式?
就是表达式的结果是布尔类型的
比较表达式
结论
&: 两边 只要有false 结果肯定为 false
有false则false
|: 两边 只要有true 结果肯定为true
有true则true
^: 两边相同为false 不同为true
同性相斥,异性相吸 (磁铁关系)
!: 非 (不是)
非true则false
非false则true
对某一个值进行偶数个非 得到结果是其本身
*/
class OperatorDemo{ public static void main(String[] args) { int a = 3; int b = 4; int c = 5; //&的用法 :并且 //左右两边连接boolean类型的值或表达式 System.out.println((a>b)&(a>c));//false & false = false System.out.println((a>b)&(a<c));//false & true = false System.out.println((a<b)&(a>c));//true & false = false System.out.println((a<b)&(a<c));//true & true = true System.out.println("-------------------------------------------------------"); //| 或, 或者的意思 有true则true 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("-------------------------------------------------------"); //^ 异或 相同为false 不同为true 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 = false System.out.println("-------------------------------------------------------"); //逻辑非! System.out.println(!(a>b));//!false = true System.out.println(!!(a>b));//!!false = !true = false System.out.println(!!!(a>b));//true } }
/*
逻辑双与&& 和逻辑与&的区别
开发中 常用&& ||
逻辑运算符 连接boolean类型的
&:有false则false
A:结果一样
B:&& 具有短路效果
如果遇到false后面的式子不再执行
左边为false 右边就不执行
&&效率比&高
开发中常用&&
|| :遇到true后面的式子不再执行
*/
class OperatorDemo2{ public static void main(String[] args) { /* int a = 3; int b = 4; int c = 5; //&&的用法 :并且 //左右两边连接boolean类型的值或表达式 & && System.out.println((a>b)&&(a>c));//false && false = false System.out.println((a>b)&&(a<c));//false && true = false System.out.println((a<b)&&(a>c));//true && false = false System.out.println((a<b)&&(a<c));//true && true = true System.out.println("-------------------------------------------------------"); */ //使用上 int x = 3; int y = 4; //& //System.out.println((x++==3)&(y++==4));//true & true //System.out.println("x:"+x);//4 //System.out.println("y:"+y);//5 //&& //System.out.println((x++==3)&&(y++==4));//true & true //System.out.println("x:"+x);//4 //System.out.println("y:"+y);//5 //& //System.out.println((++x==3)&(y++==4));//false & true =false //x先自加变成了4 再做判断 第一个式子结果是false //继续执行符号右边式子,先做判断,然后再自加 第二个式子结果是true //System.out.println("x:"+x);//4 //System.out.println("y:"+y);//5 System.out.println((++x==3)&&(y++==4));//false & true =false // x先自加变成4 再做判断 第一个式子结果是false // && 遇到false 后面的就不执行了, // 没有执行符号右边的式子 //因为你知道 逻辑与的结论 是有false则false System.out.println("x:"+x);//4 System.out.println("y:"+y);//4 } }
本文出自 “晴空” 博客,谢绝转载!
原文:http://hexudong.blog.51cto.com/7169867/1770826