The below concepts would help to understand the output:
In this class, the variable 'boo2' is not initialized. If the member and static variables are not initialized, they would get default values. example, booleans get a default value of false, integers get a default value of 0.
Hence the value of 'boo2' is false in this example
instanceof operator: This operator is used to check whether an object falls under certain type. Every object inherits the class 'Object'. So the variable boo3 is set to true
Order of precedence:
& operator has higher precedence than the | operator.
So, (boo1 & boo2 | boo2 & boo3 | boo2 ), after substituting the values will be like below:
( true & false | false & true | false ) will result in
( false | false | false ) will result in
( false )
Similarly, ( boo3 & boo2 | boo2 & boo1 | boo2 | boo1) will result in