「Guide」逻辑与&&、逻辑或||、按位与&、按位或 |

版权声明:本文为博主原创文章,未经博主允许不得转载。如文章中有您的原创段落,请您联系我,抱歉! https://blog.csdn.net/simpledate/article/details/87863838

题目:System.out.println(3 | 9);

  • 与 & 或
    “&” 和 “&&” 、 “|“和”||“都是逻辑运算符,”&”、"|" 是非短路的,"&&" 、"||"是短路的。
名称 符号 描述
逻辑与 && 两边条件都得满足,如果前面的条件不满足就不会运算后面的条件
逻辑或 I 满足一个即可,但是会运算所有条件
按位与 & 两边条件都得满足, 前面条件不满足也会运算后面的条件
按位或 II 满足一个即可
短路的情况之前第一个条件满足就不会执行后面的条件(所以没有异常)。
System.out.println((1 != 1 && 1 % 0 ==0));    
>> false
System.out.println((1 == 1 || 1 % 0 ==0));
>> true

非短路的情况是不管前面几个条件是否满足都执行完所有逻辑运算。
System.out.println((1 != 1 & 1 % 0 ==0));
System.out.println((1 == 1 | 1 % 0 ==0));
>> Exception in thread "main" java.lang.ArithmeticException: / by zero
  • 按位与、或,还可以进行二进制运算

按位与:都为1时才为1,则为0

System.out.println(0 & 0); >> 0
System.out.println(0 & 1); >> 0
System.out.println(1 & 0); >> 0
System.out.println(1 & 1); >> 1 

按位或:有一个1就为1,则为0

System.out.println(0 | 0); >> 0
System.out.println(0 | 1); >> 1
System.out.println(1 | 0); >> 1
System.out.println(1 | 1); >> 1 
  • 题目解答
    3 | 9 就是按位或运算

3 >> 0101
9 >> 1001
运算后 1101 转十进制 >> 11

System.out.println(3 | 9);
>> 11

(欢迎关注公众号)

题目来源https://github.com/Snailclimb/JavaGuide/blob/master/%E9%9D%A2%E8%AF%95%E5%BF%85%E5%A4%87/%E7%BE%8E%E5%9B%A2-%E5%9F%BA%E7%A1%80%E7%AF%87.md#1-systemoutprintln3-|-9输出什么

猜你喜欢

转载自blog.csdn.net/simpledate/article/details/87863838