为什么逻辑运算符,当java中有Bitwise运算符时

Nou*_*fal 2 java bitwise-operators logical-operators

我知道Bitwise运算符&,| 和^是按位运算符或逻辑运算符...取决于操作数的类型.

如果操作数是整数,则运算符是按位的.如果他们是布尔,那么运营商是合乎逻辑的.

那么为什么有逻辑运算符&&,|| 和!?我相信在某些情况下我们只能使用逻辑运算符,所以它们就是这样.

那么,任何人都可以解释这种情况吗?或者比按位操作有任何优势.

Grz*_*Żur 7

运营商&&和|| 懒洋洋地评估.这意味着只能评估一方.

运营商&和| 热切地评估,这意味着始终对双方进行评估.

当表达式有副作用时,这一点非常重要.

例子

x = 0;
(x++ == 0) || (x++ == 1); // x is 1    

x = 0;
(x++ == 0) | (x++ == 1); // x is 2    
Run Code Online (Sandbox Code Playgroud)