What does the |= operator do in Java?

java, operators

Solution

`|=` is a bitwise-OR-assignment operator. It takes the current value of the LHS, bitwise-ors the RHS, and assigns the value back to the LHS (in a similar fashion to `+=` does with addition).

For example:

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

Problem

While reading the Android guide to Notifications, I stumbled across this: Adding vibration You can alert the user with the the default vibration pattern or with a vibration pattern defined by your application. To use the default pattern, add "DEFAULT_VIBRATE" to the defaults field: ``` notification.defaults |= Notification.DEFAULT_VIBRATE; ``` What this does is clear: it adds the `DEFAULT_VIBRATE` flag to the default flags of the notification object. But what does the `|=` operator do in Java? It looks like an "OR", but how does it work? Can you provide an example using numbers? Thanks

Original source