Google 検索と Stack Overflow を使用して検索してみましたが、結果は表示されませんでした。オープンソース ライブラリ コードで次のものを見つけました:
Notification notification = new Notification(icon, tickerText, when);
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
「|= ( pipe equal operator
) 」はどういう意味ですか?
ベストアンサー1
|=
は と同じように読みます+=
。
notification.defaults |= Notification.DEFAULT_SOUND;
と同じです
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
ここで、は|
ビット単位の OR 演算子です。
すべての演算子は参照されるここ。
よくあることですが、ビット演算子が使用されるのは、それらの定数によって int がフラグを保持できるようになるためです。
もし、あんたが見てこれらの定数は 2 の累乗になっていることがわかります。
public static final int DEFAULT_SOUND = 1;
public static final int DEFAULT_VIBRATE = 2; // is the same than 1<<1 or 10 in binary
public static final int DEFAULT_LIGHTS = 4; // is the same than 1<<2 or 100 in binary
ビット単位のORを使ってフラグを追加することができます
int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // same as 001 | 010, producing 011
それで
myFlags |= DEFAULT_LIGHTS;
単にフラグを追加することを意味します。
対称的に、フラグが設定されているかどうかをテストするには、次を使用します&
。
boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;