1. ホーム
  2. java

[解決済み] Javaで|=演算子は何をするのですか?

2022-03-02 20:13:25

質問

を読みながら 通知に関するAndroidガイド このようなことがありました。

<ブロッククオート

振動の付加

デフォルトのバイブレーションパターンまたは アプリケーションで定義された振動パターン

デフォルトのパターンを使用するには、デフォルトのフィールドに "DEFAULT_VIBRATE"を追加してください。

notification.defaults |= Notification.DEFAULT_VIBRATE;

これが何をするものかは明らかです。 DEFAULT_VIBRATE フラグを通知オブジェクトのデフォルトフラグに追加します。 しかし |= 演算子は、Javaではどうなるのでしょうか? 一見、"OR"のように見えますが、どのように動作するのでしょうか?

数字を使った例を教えてください。

ありがとうございます

解決方法は?

|= はビット単位のOR代入演算子です。LHSの現在値を受け取り、RHSをビット単位で ORし、その値を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