版权声明:本文为博主原创文章,未经博主允许不得转载。如文章中有您的原创段落,请您联系我,抱歉! 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输出什么