java |运营商是为了什么?

时间:2010-12-13 22:42:12

标签: java

这个java代码的输出是什么?为什么?

 int a = 5 | 3 ;
 System.out.println(a);

8 个答案:

答案 0 :(得分:5)

这是一个按位运算符,是nuts and bolts Java tutorial

的一部分

输出是'或'表示数字的二进制表示中的位的结果。

答案 1 :(得分:5)

这是一个按位或。

我没有测试它。但它必须是7。

101 -> 5
011 -> 3
----
111 -> 7

1|1 = 1
1|0 = 1
0|1 = 1
0|0 = 0

答案 2 :(得分:3)

它被称为“按位OR”。

5 | 3位的数字等于

0101
or
0011
----
0111

在java 5中出现的枚举之前,使一些常量等于2的幂并使用按位OR来表示这两个属性是一种常见的模式。例如,假设字体可以是BOLD,ITALIC和UNDERLINED。如果你有常数:

public class FontStyle {
    final int BOLD = 1;
    final int ITALIC = 2;
    final int UNDERLINED = 4;

    private int fontStyle;

    public void setFontStyle(int style) {
       this.fontStyle = fontStyle;
    }

    public boolean hasStyle(int style) {
       return fontStyle & style == style;
    }
}

然后,如果你想创建风格BOLD和UNDERLINED - 只需这样做:

FontStyle boldAndUnderlined = new FontStyle();
boldAndUnderlined.setFOntStyle(FontStyle.BOLD | FontStyle.UNDERLINED);

答案 3 :(得分:2)

|运算符是一点一滴的OR函数。

二进制中的5写为101,3写成11.因此3 | 5将给出111,即7。

答案 4 :(得分:1)

它的'二进制'或“运算符在一堆其他语言中,我认为它在java中是相同的

答案 5 :(得分:1)

它是按位或:

5 = 110
3 = 011
5 | 3 =
    111

答案 6 :(得分:0)

答案 7 :(得分:0)