Самый простой способ переключить логическую переменную в Java? - PullRequest
193 голосов
/ 22 октября 2008

Есть ли лучший способ отменить логическое значение в Java, чем простой if-else?

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

Ответы [ 6 ]

487 голосов
/ 22 октября 2008
theBoolean = !theBoolean;
152 голосов
/ 22 октября 2008
theBoolean ^= true;

Меньше нажатий клавиш, если длина вашей переменной превышает четыре буквы

26 голосов
/ 14 ноября 2016

Есть несколько

«Очевидный» способ (для большинства людей)

theBoolean = !theBoolean;

«Самый короткий» путь (большую часть времени)

theBoolean ^= true;

«Самый наглядный» способ (наиболее неопределенно)

theBoolean = theBoolean ? false : true;

Дополнительно: переключение и использование в вызове метода

theMethod( theBoolean ^= true );

Так как оператор присваивания всегда возвращает то, что было назначено, это переключит значение с помощью побитового оператора, а затем вернет вновь присвоенное значение, которое будет использоваться в вызове метода.

2 голосов
/ 01 июля 2017

Если вы используете логические значения NULL и считаете их ложными, попробуйте следующее:

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

Если вы не передаете логические значения NULL, попробуйте следующее:

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

Это cleanest , потому что они показывают намерение в сигнатуре метода, легче читаются по сравнению с оператором ! и легко отлаживаются.

Использование

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
0 голосов
/ 11 апреля 2019

Если вы не занимаетесь чем-то особенно профессиональным, вы всегда можете использовать класс 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. Не знаю, что такое отраслевой стандарт. (Опытные программисты не стесняются меня поправлять)

0 голосов
/ 02 апреля 2015

До:

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

После того, как:

boolean result = isresult();
result ^= true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...