0

可以像这样使用按位运算符(|、^、&)吗:

int a=23;
int b=42;
if(a==20^b==40){...};

尽管在 H.Schildt 的“Java, A Beginner's Guide”中,它说像这样的运算符同样具有逻辑性和按位性。

4

2 回答 2

2

是的,你可以,但我认为你不应该。

确保您的代码反映了您打算做什么。Java 有一个原生boolean类型,可以处理trueorfalse值。您可以将它们与逻辑&&(“and”)、||(“or”)结合使用,也可以使用一元!(“not”)和所有比较运算符。当您使用这些运算符时,您是在告诉您正在检查条件

另一方面,位运算符使用整数类型(即byte, short, int, long)。通过在这些类型上使用它们,您就是在告诉您正在执行计算

即使您可以使用位运算符而不是逻辑运算符,代码维护人员也很难弄清楚您的意图是什么。

于 2013-10-05T06:15:55.547 回答
0

是的,可以使用这样的逻辑运算符。

请注意,如果操作数是整数类型,它们只是按位运算符。在您的示例代码中,操作数是boolean(和的结果a==20b==40......所以这意味着运算符是逻辑运算符而不是按位运算符。

(如果您认为我在迂腐,请考虑对象a + b在哪里abString对象。在这种情况下,我们不会将+运算符称为“加法”。)

于 2013-10-05T05:44:33.857 回答