JAVA的逻辑运算符,位运算符,三元运算符

逻辑运算符

逻辑运算符有哪些:

& (并且)   |(或者)  !(非)   ^(异或)   &&(短路与)   ||(短路或)

逻辑运算结果:

逻辑运算符的运算结果是布尔类型。

& 并且 
运算两端,只有左右两端同时为true,其最终结果才是true ,只要任意一端为false其最终结果都是false 

| 或者
运算两端,只要任意一端为true其最终结果就为true,只有运算两端都为false了其最终结果就是
false

!(非) 
取反 true变false false变true

^(异或) 
运算两端,相同为false 不同为true
true^false 结果是 true  false^true 结果是true  true^true false^false 结果是false


&(并且) , |(或者)  和  &&(短路与) , ||(短路或) 的区别
他们在运算结果上是没有区别的。只是在运算效率上有区别。

& 左右两端的表达式都需要执行
&& 当左端为false 右端的表达式就执行了
&& 当左端为true时,右端的表达式还是有执行的。

| 左右两端的表达式都需要执行。
|| 当左端为true时,右端的表达式就不执行了。
|| 当左端为false时,右端的表达是还是要执行的。

位运算符

位运算符 &(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
& | ^ 如果两端是数值,就是位运算符
& | ^ 如果两端是布尔类型,那就是逻辑运算符
注意事项:位运算是直接对二进制补码进行运算。运算效率高一些
&:有0则0
|:有1则1
^:相同则0,不同则1  //^ 一个数,被另一个数位异或两次该数不变,自己跟自己位异或 结果是0
~:按位取反 0 变1 1 变0 符号位也包含在内取反
<<:左移 被移除的高位丢弃,空位补0,//把 << 左边的数据乘以2的移动次幂
>>:右移 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。//把 >> 左边的数据除以2的移动次幂
>>>:无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。

三元运算符

三元运算符
表达式?结果1:结果2
当表达式的结果为true时,返回结果1 为false时返回结果2