「|=」とはどういう意味ですか? (パイプ等号演算子) 質問する

「|=」とはどういう意味ですか? (パイプ等号演算子) 質問する

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;

おすすめ記事