在Java中切换布尔变量的最简洁方法?

时间:2008-10-22 02:44:09

标签: java boolean

是否有更好的方法来否定Java中的布尔值而不是简单的if-else?

if (theBoolean) {
    theBoolean = false;
} else {
    theBoolean = true;
}

9 个答案:

答案 0 :(得分:486)

theBoolean = !theBoolean;

答案 1 :(得分:152)

theBoolean ^= true;

如果您的变量超过四个字母

,则击键次数减少

答案 2 :(得分:26)

有几个

“明显”的方式(对大多数人来说)

theBoolean = !theBoolean;

“最短”的方式(大部分时间)

theBoolean ^= true;

“最直观”的方式(最不确定)

theBoolean = theBoolean ? false : true;

额外:在方法调用中切换并使用

theMethod( theBoolean ^= true );

由于赋值运算符始终返回已分配的内容,因此将通过按位运算符切换值,然后返回要在方法调用中使用的新分配值。

答案 3 :(得分:2)

如果您使用布尔值NULL并将其视为false,请尝试以下操作:

static public boolean toggle(Boolean aBoolean) {
    if (aBoolean == null) return true;
    else return !aBoolean;
}

如果您没有处理布尔值NULL值,请尝试:

static public boolean toggle(boolean aBoolean) {
   return !aBoolean;
}

这些是最干净的,因为它们显示方法签名中的意图,与运算符相比更容易阅读,并且可以轻松调试。

用法

boolean bTrue = true
boolean bFalse = false
boolean bNull = null

toggle(bTrue) // == false
toggle(bFalse) // == true
toggle(bNull) // == true

当然,如果您使用 Groovy 或允许扩展方法的语言,您可以注册一个扩展名,只需执行以下操作:

Boolean b = false
b = b.toggle() // == true

答案 4 :(得分:1)

搜索“ java反向布尔函数”时出现此答案。下面的示例将防止某些静态分析工具由于分支逻辑而导致构建失败。如果您需要反转布尔值并且尚未构建全面的单元测试,这将非常有用;)

Boolean.valueOf(aBool).equals(false)

或者:

Boolean.FALSE.equals(aBool)

Boolean.FALSE::equals

答案 5 :(得分:1)

BooleanUtils支持对布尔值的取反。您可以在commons-lang:commons-lang

中找到此类
BooleanUtils.negate(theBoolean)

答案 6 :(得分:0)

如果您没有做任何特别专业的事情,则可以始终使用Util类。例如,来自项目的util类,用于一个类。

public class Util {


public Util() {}
public boolean flip(boolean bool) { return !bool; }
public void sop(String str) { System.out.println(str); }

}

然后只需创建一个Util对象 Util u = new Util(); 并有一些回报System.out.println( u.flip(bool) );

如果您将要一遍又一遍地使用同一件事,请使用一种方法,尤其是在跨项目的情况下,请创建一个Util类。但是,Dunno的行业标准是什么。 (经验丰富的程序员可以随时纠正我)

答案 7 :(得分:-1)

不幸的是,没有像数字有增/减这样的缩写形式:

i ++;

我想要类似的短表达式来反转布尔值,例如:

isEmpty!;

答案 8 :(得分:-3)

之前:

boolean result = isresult();
if (result) {
    result = false;
} else {
    result = true;
}

后:

boolean result = isresult();
result ^= true;