ビット演算子は変数を移動し、ビットごとに操作することを目的としています。整数、long、char の場合、これは理にかなっています。これらの変数には、サイズによって強制される値の全範囲を含めることができます。
ただし、ブール値の場合、ブール値には 2 つの値しか含めることができません。1 = true または 0 = false です。ただし、ブール値のサイズは定義されていません。1 バイトほどの大きさになることもあれば、1 ビットほど小さいこともあります。
では、ブール値にビット演算子を使用するとどのような効果がありますか? JVM は基本的にそれを通常の論理演算子に変換して先に進みますか? 操作の目的でブール値を 1 ビットのエンティティとして扱いますか? それとも、ブール値のサイズとともに結果が未定義になりますか?
ベストアンサー1
演算子&
、^
、 は、|
オペランドがプリミティブ整数型の場合、ビット演算子です。オペランドがブール値の場合には、論理演算子となり、後者の場合の動作は指定されています。Java言語仕様詳細については。