获得Java布尔值的倒数的最简洁方法是什么?

时间:2010-10-11 14:59:30

标签: java boolean inverse

如果你有一个布尔变量:

boolean myBool = true;

我可以使用if / else子句获得相反的结果:

if (myBool == true)
 myBool = false;
else
 myBool = true;

有更简洁的方法吗?

5 个答案:

答案 0 :(得分:91)

只需使用逻辑NOT运算符!,就像您在条件语句中所做的那样(ifforwhile ...)。您已使用布尔值,因此它会将true翻转为false(反之亦然):

myBool = !myBool;

答案 1 :(得分:40)

更酷的方式(如果你想设置变量),对于长度超过4个字符的变量名称,比myBool = !myBool更简洁:

myBool ^= true;

顺便说一句,不要使用if (something == true),如果只做if (something)就更简单了(与false比较相同,使用否定运算符)。

答案 2 :(得分:12)

对于boolean来说,这很容易,Boolean更具挑战性。

  • boolean只有两种可能的状态: truefalse
  • 另一方面,Boolean有3:Boolean.TRUEBoolean.FALSEnull

假设您刚刚处理boolean(这是一种原始类型),那么最简单的方法就是:

boolean someValue = true; // or false
boolean negative = !someValue;

但是,如果您要反转Boolean(对象),则必须注意null值,否则最终可能会NullPointerException

Boolean someValue = null;
Boolean negativeObj = !someValue.booleanValue(); --> throws NullPointerException.

假设此值永远不为null,并且您的公司或组织没有针对自动(非)装箱的代码规则。实际上你可以把它写成一行。

Boolean someValue = Boolean.TRUE; // or Boolean.FALSE
Boolean negativeObj = !someValue;

但是,如果您确实想要处理null值。然后有几种解释。

boolean negative = !Boolean.TRUE.equals(someValue); //--> this assumes that the inverse of NULL should be TRUE.

// if you want to convert it back to a Boolean object, then add the following.
Boolean negativeObj = Boolean.valueOf(negative);

另一方面,如果您希望null在倒置后保持null,那么您可能需要考虑使用apache commonsBooleanUtils({{3} })

Boolean someValue = null; // or Boolean.TRUE or Boolean.FALSE;
Boolean negativeObj = BooleanUtils.negate(someValue);

有些人宁愿把它全部写出来,以避免产生apache依赖。

Boolean someValue = null; // or Boolean.TRUE or Boolean.FALSE;
boolean negative = (someValue == null)? null : !someValue.booleanValue();
Boolean negativeObj = Boolean.valueOf(negative);

答案 3 :(得分:1)

最简洁的方法是不反转布尔值,当你想检查相反的条件时,只需在代码中使用!myBool。

答案 4 :(得分:-3)

myBool = myBool ? false : true;