Что делает | =, оператор делает в Java?

В то время как чтение Android ведет к Уведомлениям, я споткнулся через это:

Добавление вибрации

Можно предупредить пользователя с шаблон вибрации по умолчанию или с шаблоном вибрации, определенным приложением.

Для использования шаблона по умолчанию добавьте "DEFAULT_VIBRATE" к полю значений по умолчанию:

notification.defaults |= Notification.DEFAULT_VIBRATE;

То, что это делает, очиститься: это добавляет DEFAULT_VIBRATE отметьте к флагам по умолчанию объекта уведомления. Но что делает |= оператор делает в Java? Похоже "ИЛИ", но как это работает?

Можно ли обеспечить пример с помощью чисел?

Спасибо

15
задан Community 16 April 2015 в 08:04
поделиться

6 ответов

| = - оператор присваивания побитового ИЛИ. Он берет текущее значение LHS, поразрядно или RHS и присваивает значение обратно LHS (аналогично + = с добавлением).

Например:

foo = 32;   // 32 =      0b00100000
bar = 9;    //  9 =      0b00001001
baz = 10;   // 10 =      0b00001010
foo |= bar; // 32 | 9  = 0b00101001 = 41
            // now foo = 41
foo |= baz; // 41 | 10 = 0b00101011 = 43
            // now foo = 43
28
ответ дан 1 December 2019 в 00:20
поделиться

a | = x равно a = a | x , а | - это «поразрядное включающее ИЛИ»

Когда возникают такие вопросы, проверяйте официальное руководство по операторам .

Каждый оператор имеет форму назначения:

+ = - = * = / = % = & = ^ = | = << = >> = >>> =

Где OP = x переводится в a = OP x

И примерно поразрядные операции :

   0101 (decimal 5)
OR 0011 (decimal 3)
 = 0111 (decimal 7)

Побитовое ИЛИ может использоваться в ситуациях, когда набор битов используется в качестве флагов; каждый бит одного двоичного числа может представлять отдельную логическую переменную. Применение побитовой операции ИЛИ к числу вместе с битовым шаблоном, содержащим 1 в некоторых позициях, приведет к получению нового числа с установленными битами. Например:

17
ответ дан 1 December 2019 в 00:20
поделиться

Это побитовый оператор ИЛИ. Если notifications.default - 0b00000001 в двоичной форме, а Notification.DEFAULT_VIBRATE - 0b11000000, то результатом будет 0b11000001.

1
ответ дан 1 December 2019 в 00:20
поделиться

Это сокращенная запись для выполнения побитового ИЛИ и присваивания за один шаг.

x | = y эквивалентно x = x | y

Это можно сделать с помощью многих операторов, например:

x += y
x -= y
x /= y
x *= y
etc.

Пример побитового ИЛИ с использованием чисел ... если в операндах установлен какой-либо бит, в результате будет установлен бит. Итак, если:

x = 0001 and
y = 1100 then
--------
r = 1101
3
ответ дан 1 December 2019 в 00:20
поделиться

оператор побитового ИЛИ

0
ответ дан 1 December 2019 в 00:20
поделиться

В данном случае notification.defaults - это битовый массив. Используя |=, вы добавляете Notification.DEFAULT_VIBRATE в набор параметров по умолчанию. Внутри Notification, вероятно, наличие этого конкретного значения будет проверяться следующим образом:

notification.defaults & Notification.DEFAULT_VIBRATE != 0 // Present
1
ответ дан 1 December 2019 в 00:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: