值为

时间:2015-09-26 14:21:16

标签: java refactoring xor

我想检查 a 是否等于某个值, b 等于另一个,反之亦然

例如

(a == 3 && b == 5) || (a == 5 && b == 3)

我知道如果是boolean个变量,我可以对它们进行异或。检查两个值时如何实现相同的功能?

2 个答案:

答案 0 :(得分:2)

您的代码没有任何问题,没有更简单的方法。但是,您可以省略括号,因为&&绑定比||更强。请参阅Java operator order

答案 1 :(得分:0)

考虑这两个方程:

a + b = 8            
a * b = 15           

如果你解决了这个方程式, 事实证明,满足这两个方程的唯一值对是(3, 5)(5, 3)。 您可以使用它来用算术重写复杂的布尔值:

(a + b == 8 && a * b == 15)

因此,而不是7个布尔条件, 现在你有3个布尔条件+ 1个加法+ 1个乘法。 它写得更短,但它太聪明了。 最好保留原文。