Operadores de comparación de Java

Operadores de comparación de Java

En este séptimo capítulo del curso, vamos a dar los operadores de comparación, los cuales, nos van a servir para que nuestros programas sean capaces de obtener la lógica necesaria para tomar decisiones.

¿Para qué sirven los valores booleanos en programación?

Los valores booleanos (tipo de dato boolean en Java), sirven para que los programas sean capaces de tomar decisiones lógicas. Estas decisiones se tomarán con valores booleanos, "true" y "false".

Gracias a estos dos valores booleanos, podemos hacer que el programa haga una cosa si se cumple cierta condición ("true") y que haga otra diferente si no se cumple ("false").

¿Dónde utilizaremos los operadores de comparación?

Normalmente, los operadores de comparación, los usaremos con condicionales. Tema del cual hablaremos muy pronto. De momento, los vamos a emplear con variables de tipo boolean, así las empiezas a utilizar y aprendes la lógica de las decisiones booleanas, la cual, te allanará el terreno enormemente para cuando demos el tema de los condicionales.

¿Cuáles son los operadores de comparación?

Te dejo una tabla con los operadores de comparación. Los cuales, los vamos a poner en práctica a continuación.

Símbolo de operadorNombre del operador
>Mayor que
<Menor que
>=Mayor o igual que
<=Menor o igual que
==Igual que
!=Diferente que

¿Cómo funcionan las comparaciones?

Las comparaciones que hace Java para determinar si algo se cumple o no, son muy simples. Mira este ejemplo:

boolean comparacion = numero1 > numero2;

La evaluación está en una variable de tipo boolean. Lo que le damos como valor, es lo que se conoce como comparación o expresión. Esta expresión dice "numero1 es mayor que numero2".

Si el valor que tiene la variable numero1 es mayor que el que tiene numero2, lo que se almacena en la variable boolean será un "true", que quiere decir, que es cierto, verdadero.

En cambio, si en la expresión le ponemos una mentira, que numero1 no es mayor que numero2, nos dará un resultado de "false" (falso).

Así de simple es la lógica booleana, o es cierto o es falso lo que le pongamos a las variables booleanas.

Desde una visión un poco más técnica, piensa que siempre se compara el valor de la izquierda (x) con el de la derecha (y).

boolean comparacion = x > y;

El operador de comparación mayor que de Java

Empecemos a poner todo esto en práctica.

El operador mayor que de Java compara si un valor es mayor que otro, así de fácil.

public class Main {
    public static void main(String[] args) {
        byte numero1 = 10;
        byte numero2 = 20;
        boolean comparacion = numero1 > numero2;
        System.out.print(comparacion);
    }
}

Resultado en la consola

false

¿Por qué devuelve "false" al imprimir la variable booleana? numero1, vale 10, por lo tanto, no es mayor que numero2, estamos mintiendo y Java lo sabe.

El operador de comparación menor que de Java

El operador menor que de Java, compara si un valor es menor que el otro:

public class Main {
    public static void main(String[] args) {
        byte numero1 = 10;
        byte numero2 = 20;
        boolean comparacion = numero1 < numero2;
        System.out.print(comparacion);
    }
}

Resultado en la consola

true

Esta vez, la expresión es verdadera, ya que numero1 es menor que numero2.

El operador de comparación mayor o igual que de Java

El operador mayor o igual que de Java, compara si un valor es mayor o es igual que el otro. En ambas ocasiones, si es así, devolverá true. Solo en caso de que sea menor, devolverá false.

public class Main {
    public static void main(String[] args) {
        byte numero1 = 10;
        byte numero2 = 20;
        boolean comparacion = numero1 >= numero2;
        System.out.print(comparacion);
    }
}

Resultado en la consola

false

Devuelve false, puesto que numero1, es menor que numero2, ni es mayor, ni es igual.

Si ponemos los dos valores iguales o el valor de numero1 mayor, da "true":

public class Main {
    public static void main(String[] args) {
        byte numero1 = 10;
        byte numero2 = 10;
        boolean comparacion = numero1 >= numero2;
        System.out.print(comparacion);
    }
}

Resultado en la consola

true

El operador de comparación menor o igual que de Java

El operador de comparación menor o igual que de Java, devuelve "true" si el valor de la izquierda (numero1) es menor o igual que el de la derecha (numero2).

En este caso, son iguales, por lo tanto, se cumple también y nos da "true".

public class Main {
    public static void main(String[] args) {
        byte numero1 = 10;
        byte numero2 = 10;
        boolean comparacion = numero1 <= numero2;
        System.out.print(comparacion);
    }
}

Resultado en la consola

true

El operador de comparación igual que de Java

En esta parte, debes prestar especial atención, ya que muchas veces se confunde el operador de igualdad con el de asignación.

¿Cómo llamas en la vida cotidiana a este símbolo "="? Al menos, yo le llamo igual.

En programación, llamar a esto "=" "igual", es un error y ahora te muestro porque.

Si te fijas, para dar valor a las variables, estamos utilizando el operador "=", que es el que se conoce como operador de asignación. Sirve para asignar valores.

En cambio, en las expresiones comparativas como las que acabas de ver, si queremos comparar si dos valores son iguales, necesitaremos utilizar el operador de comparación de igualdad, que es un doble "=".

public class Main {
    public static void main(String[] args) {
        byte numero1 = 10;
        byte numero2 = 10;
        boolean comparacion = numero1 == numero2;
        System.out.print(comparacion);
    }
}

Resultado en la consola

true

Si intentes hacer esto, te dará una error (fíjate en el operador de la línea 5):

public class Main {
    public static void main(String[] args) {
        byte numero1 = 10;
        byte numero2 = 10;
        boolean comparacion = numero1 = numero2;
        System.out.print(comparacion);
    }
}

Error en la consola

java: incompatible types: byte cannot be converted to boolean

El error dice que el tipo byte, no puede ser convertido a boolean.

Esto ocurre porque estoy intentando, por culpa de poner el operador de asignación y no el de comparación en la línea 5.

El valor de numero1, se está intentado asignar directamente a la variable booleana, por eso nos dice que el tipo byte no se puede transformar a boolean.

El tipo boolean, solo puede almacenar los valores "true" y "false", intentar almacenar números, siempre ocasionará errores.

Ya lo sabes, siempre, para comparar el doble igual "==" y para asignar valores, un igual "=".

El operador de comparación diferente que de Java

El operador de comparación diferente que de Java, nos ofrece la posibilidad de comparar todo lo contrario, al igual que (==). En este caso, si los valores son iguales, nos devolverá "false" y si son diferentes, "true".

public class Main {
    public static void main(String[] args) {
        byte numero1 = 10;
        byte numero2 = 10;
        boolean comparacion = numero1 != numero2;
        System.out.print(comparacion);
    }
}

Resultado en la consola

false

Puesto que son iguales, no se cumple la expresión, es "false".

En cambio, aquí son diferentes, por lo que devuelve "true".

public class Main {
    public static void main(String[] args) {
        byte numero1 = 10;
        byte numero2 = 20;
        boolean comparacion = numero1 != numero2;
        System.out.print(comparacion);
    }
}

Resultado en la consola

true

Muy pronto le verás todo el sentido a utilizar estos operadores. De momento, espero que lo hayas entendido todo muy bien. Por supuesto, si te quedan dudas, abajo tienes una caja de comentarios.

Todo el temario del curso Java aquí.

Ejercicios de Java

Te dejo unos cuantos ejercicios relacionados con el temario. Las soluciones, las encontrarás en el siguiente capítulo.

Sin ejecutar nada de código, ¿sabrías decirme qué valores booleanos devuelven las siguientes expresiones?

  1. 10 > 10
  2. 10 < 11
  3. 50 = 50
  4. 45 != 100
  5. 10 >= 5
  6. 5 <= 10
  7. 65 == -65

Soluciones de los ejercicios del capítulo anterior

  • Ejercicio 1:
//Suma con resultado
int numero1 = 10;
int numero2 = 20;
int numero3 = 30;
int resultado = numero1 + numero2 + numero3;
  • Ejercicio 2:
//Suma con resultado
int numero1 = 10;
int numero2 = 20;
int numero3 = 30;
int resultado = numero1 + numero2 + numero3;

//Se imprime el resultado
System.out.print(resultado);
  • Ejercicio 3:

Es correcto, ya que se pueden emplear valores literales y variables en conjunto sin problemas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

windows Entrada anterior Atajos de teclado Windows
curso de Python Entrada siguiente Copias de seguridad de bases de datos MySQL con Python