2010-12-13 71 views
0

此java代碼的輸出是什麼?爲什麼?java |運營商是爲了什麼?

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

的輸出是什麼? – Josh 2010-12-13 22:43:12

+5

這功課嗎? – SingleNegationElimination 2010-12-13 22:43:24

+3

運行它並找出答案。然後返回並接受以前問題的一些最佳答案。 – 2010-12-13 22:59:40

回答

3

它被稱爲「按位或」。

5 | 3比特等於

0101 
or 
0011 
---- 
0111 

枚舉在Java 5 appered之前,它是一個常見的模式,使一些常量等於2和使用按位的權力或表達這兩種性質。例如,假設字體可以是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; 
    } 
} 

然後,如果你想創建樣式粗體和下劃線 - 只是這樣做:

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

嗯,所以setFontStyle函數必須根據該風格寫入。例如,如果我發送setFontStyle(3 | 5)它意味着setFontStyle(7)不能有一個特殊的枚舉等於7. – 2010-12-13 23:04:23

+0

歷史課的+1。 – bancer 2010-12-13 23:10:40

+0

我的搜索從這個陳述開始gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);在android上學習opengl這個不是老式的平臺。 – 2010-12-13 23:16:06

1

其二元‘或’運營商在一堆其他語言的,我想這是在Java中同樣

1

是按位或:

5 = 110 
3 = 011 
5 | 3 = 
    111 
2

的|運算符是一個按位或功能。

5二進制寫101,和3寫入11 SO 3 | 5會給你111,這是7

5

這是按位或。

我沒有測試它。但它必須是7.

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

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