Java – Operador Ternario ?

En muchas ocasiones, la estructura de una sentencia IF puede requerir varias líneas de código y realmente hacer muy poco.  En Java se implementado el Operador Condicional Ternario ?, que puede sustituir fácilmente a un if y a varias líneas de código.  Por ejemplo, en las líneas de código siguientes:

public class EjemploIF {
    public static void main(String args[]) {
        int i = 1;
        int j = 2;
        int numeroMayor = 0;
        if (i > j) {
            numeroMayor = i;
        } else {
            numeroMayor = j;
        }
        System.out.println("numeroMayor: " + numeroMayor);
    }
}

La estructura de la sentencia if nos toma cuatro líneas, desde luego se puede poner todo en una sola línea, pero aun así estamos empleado algo de código.

Esta sentencia se puede cambiar por una forma más resumida de código con la ayuda del Operador Ternario ? que tiene la siguiente forma:

resultado = (condición)? primerValor : segundoValor;

Si observas la estructura, en la primera parte de la sentencia después de la asignación, evaluamos una condición, en la segunda asignamos un valor primerValor a la variable resultado si la condición es verdadera, o bien, un segundoValor, si la condición resulta falsa.

Entonces nuestro ejemplo de if anterior quedaría como sigue:

public class EjemploIF {
    public static void main(String args[]) {
        int i = 1;
        int j = 2;
        int numeroMayor = 0;
        numeroMayor = i > j ? i : j;
        System.out.println("numeroMayor: " + numeroMayor);
    }
}

El resultado en consola de ejecutar el código anterior será el siguiente:

numeroMayor: 2

Nos hemos ahorrado al menos cuatro líneas de código.  Si observas, a diferencia de la sentencia if, estamos asignando un valor a una variable directamente y como resultado de evaluar una condición. Con el if, tenemos que hacer la asignación explícitamente.  Otra cosa que debes observar es que cuando la condición es verdadera, se asigna el valor de i, que se separa por dos puntos, de la asignación del segundo valor j, que debe hacerse en el caso de que la condición sea falsa.



Para que notes que útil puede ser este operador, tienes el ejemplo siguiente:

public class EjemploIF {
    public static void main(String args[]) {
        int i = 1;
        int j = 2;
        System.out.println("numeroMayor: " + ((i > j) ? "i es mayor" : "j es mayor"));
    }
}

El resultado en consola:

Si observas, no sólo hemos evitado usar una sentencia IF, también hemos usado el operador para evaluar y concatenar con otra cadena el resultado de nuestra evaluación y la asignación de una cadena dentro de otra sentencia.  Si la condición se cumple se concatenará a «numeroMayor: » la cadena «i es mayor«, de lo contrario, se concatenará «j es mayor«.  El resultado en consola para este ejemplo es:

numeroMayor: j es mayor

El código es mucho más compacto al usar el Operador Ternario ?

Sin embargo, muchos programadores, aun sabiendo lo útil que resulta este operador, prefieren usar sentencias if, para hacer que el código que resulte fácil de leer.  Es cuestión de gustos y estilos.