Pregunta

¿Hay una mejor manera de negar un booleano en Java que un simple si-else?

if (theBoolean) {
    theBoolean = false;
} else {
    theBoolean = true;
}
¿Fue útil?

Solución

theBoolean = !theBoolean;

Otros consejos

theBoolean ^= true;

Menos pulsaciones de teclas si su variable tiene más de cuatro letras

Hay varios

El " obvio " manera (para la mayoría de las personas)

theBoolean = !theBoolean;

El " más corto " manera (la mayoría de las veces)

theBoolean ^= true;

El " más visual " manera (lo más incierto)

theBoolean = theBoolean ? false : true;

Extra: alternar y usar en una llamada de método

theMethod( theBoolean ^= true );

Dado que el operador de asignación siempre devuelve lo que se ha asignado, esto cambiará el valor a través del operador a nivel de bits, y luego devolverá el nuevo valor asignado que se usará en la llamada de método.

Si usa valores NULL booleanos y los considera falsos, intente esto:

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

Si no está entregando valores NULL booleanos, intente esto:

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

Estos son los más limpios porque muestran la intención en la firma del método, son más fáciles de leer en comparación con el operador ! y se pueden depurar fácilmente.

Uso

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

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

Por supuesto, si utiliza Groovy o un idioma que permita los métodos de extensión, puede registrar una extensión y simplemente hacer:

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

Si no estás haciendo nada particularmente profesional, siempre puedes usar una clase de Util. Ex, una clase util de un proyecto para una clase.

public class Util {


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

}

luego simplemente crea un objeto Util Util u = new Util (); y tiene algo para la devolución System.out.println (u.flip (bool));

Si vas a terminar usando lo mismo una y otra vez, usa un método, y especialmente si se trata de proyectos, crea una clase de Util. No sé cuál es el estándar de la industria sin embargo. (Los programadores experimentados se sienten libres de corregirme)

Antes:

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

Después:

boolean result = isresult();
result ^= true;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top