在布尔检查的情况下,我个人喜欢使用异或(exclusive or)运算符^
,因为它简洁明了。因此,我更喜欢这样写:
if (boolean1 ^ boolean2)
{
//do it
}
比
if((boolean1 && !boolean2) || (boolean2 && !boolean1))
{
//do it
}
但是我经常从其他有经验的Java开发人员(不仅仅是新手)那里得到困惑的表情,有时还会听到关于它只能用于位运算的评论。
我很好奇关于使用^
操作符的最佳实践。
bool1 ^ bool2 ^ bool3
比bool1 != bool2 != bool3
更具逻辑意义。 - BlueRaja - Danny Pflughoeft!=
对于boolean
类型的值可以产生正确的结果(但对于Boolean
类型的值则需要注意)。然而,它并不总是很清晰易读。例如,(some != null) != (other != null)
这个表达式并不容易理解。你可以将其分解为明确的布尔值,或将!=
操作提取到一个单独的方法中。 - ivanta ^ b
的意思是“a或b但不能同时出现”,而a != b
的意思是“a不等于b”。这就是@RobertGrant所说的内容。如果能够理解异或运算的话(在计算领域非常有用),那么大多数人就更容易理解第一个表达式了。 - Harold R. Easona != b
=> "a 不等同于 b" - Mario Reutter