2010-12-13 2 views
0

Каков результат этого Java-кода и почему?java | оператор для чего?

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

Какой выход? – Josh

+5

Это домашнее задание? – SingleNegationElimination

+3

Запустите его и узнайте. Затем вернитесь и примите некоторые из лучших ответов на ваши предыдущие вопросы. –

ответ

3

Это называется «побитовое ИЛИ».

5 | 3 в битах равно

0101 
or 
0011 
---- 
0111 

Перед перечислениями appered в Java 5, это был общий шаблон, чтобы сделать некоторые константы равна степенями 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. –

+0

+1 для урока истории. – bancer

+0

Мой поиск начался с этого оператора gl.glClear (GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); при изучении opengl на android это не старая платформа стиля. –

1

Его двоичный „или“ оператор в куче других языков, я предполагаю, что это то же самое в Java

5

Это оператор побитового, часть nuts and bolts Java tutorial

На выходе результат «или» битов в двоичном представлении чисел.

1

это побитовое или:

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

| оператор побитовое ИЛИ.

5 в двоичной системе записывается 101 и 3 записывается 11. Таким образом, 3 | 5 даст вам 111, который 7.

5

Это побитовое или.

Я не тестировал его. Но это должно быть 7.

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

1|1 = 1 
1|0 = 1 
0|1 = 1 
0|0 = 0 
Смежные вопросы