Saltearse al contenido

Operadores

Operadores

Claro está que un programa no puede estar compuesto únicamente por declaraciones y asignaciones de variables. Debemos procesar los datos de entrada para obtener un resultado, y para ello, debemos utilizar operadores.

Los operadores son empleados para realizar operaciones entre variables y valores. En Java, existen varios tipos de operadores, los cuales se clasifican en operadores aritméticos, operadores de asignación, operadores de comparación y operadores lógicos.

Operadores aritméticos

Los operadores aritméticos que se encuentran disponibles en Java son los siguientes:

OperadorNombreDescripciónEjemplo
+SumaSuma dos valoresx + y
-RestaResta dos valoresx - y
*MultiplicaciónMultiplica dos valoresx * y
/DivisiónDivide dos valoresx / y
%MóduloDevuelve el resto de la división entera entre dos valoresx % y

Debemos tener en cuenta que los operadores aritméticos solo pueden ser empleados con valores numéricos, es decir, con valores de tipo byte, short, int, long, float o double. Por lo cual, no podríamos sumar dos valores de tipo char ni de tipo boolean.

1
char letra = 'a';
2
char otraLetra = 'b';
3
char suma = letra + otraLetra; //error: incompatible types: possible lossy conversion from int to char

Estos operadores son ampliamente utilizados en programación, ya que son la base de muchos algoritmos.

Por ejemplo, una operación típica es incrementar el valor de una variable en una unidad. Es decir, emplear la variable en cuestión para contar la cantidad de veces que se realiza una acción.

1
int contador = 0;
2
contador = contador + 1; // contador = 1
3
contador = contador + 1; // contador = 2
4
contador = contador + 1; // contador = 3

En este caso, la variable contador se inicializa con el valor 0, y luego se incrementa en una unidad. En la segunda línea, la variable contador se evalúa y se le asigna el valor de contador + 1, es decir, 0 + 1, que es 1. Así, en cada línea, la variable contador se incrementa en una unidad.

Esta operación es tan común, que existe un operador especial para realizarla, el operador de incremento (++).

1
int contador = 0;
2
contador++;
3
contador++;
4
contador++;

De manera complementaria, existe el operador de decremento (--), el cual decrementa en una unidad el valor de una variable.

1
int contador = 3;
2
contador--;
3
contador--;
4
contador--;

Operadores de asignación

Como vimos anteriormente, el operador de asignación (=) es fundamental para realizar prácticamente cualquier operación en Java.

Sin embargo, existen otros operadores de asignación que nos permiten realizar una operación aritmética y asignar el resultado a una variable en una sola sentencia, simplificando así el código y haciéndolo más legible.

OperadorDescripciónEjemplo
+=Suma y asignax += y es equivalente a x = x + y
-=Resta y asignax -= y es equivalente a x = x - y
*=Multiplica y asignax *= y es equivalente a x = x * y
/=Divide y asignax /= y es equivalente a x = x / y
%=Módulo y asignax %= y es equivalente a x = x % y

Operadores de comparación o relacionales

Los operadores de comparación o operadores relacionales son aquellos que nos permiten comparar dos valores estableciendo una relación de orden entre ellos.

Los operadores de comparación disponibles en Java son los siguientes:

OperadorDescripciónEjemplo
==Igual ax == y
!=Distinto dex != y
>Mayor quex > y
<Menor quex < y
>=Mayor o igual quex >= y
<=Menor o igual quex <= y

Por ejemplo, si queremos comparar si dos valores son iguales, podemos utilizar el operador ==.

1
int num1 = 5;
2
int num2 = 5;
3
System.out.println(num1 == num2); // true

En este caso, el operador == evalúa si el valor de num1 es igual al valor de num2. Como ambos valores son iguales, el resultado de la operación es true.

Veremos que estos operadores son fundamentales para controlar el flujo de ejecución de un programa, es decir, para decidir qué instrucciones se ejecutan y cuáles no.

Operadores lógicos

Ahora que conocemos los operadores de comparación, podría surgir la necesidad de combinarlos para realizar operaciones más complejas. Es decir, establecer más de una condición para que se cumpla una operación. Para ello, utilizaremos los operadores lógicos.

Las operaciones lógicas disponibles en Java son las siguientes:

OperadorNombreDescripciónEjemplo
&&ANDDevuelve true si todos los valores booleanos son truex && y
||ORDevuelve true si al menos uno de los valores booleanos es truex || y
!NOTDevuelve el valor opuesto del valor booleano!x

Por ejemplo, si queremos evaluar si dos valores son mayores que cero, podemos utilizar el operador && (AND).

1
int num1 = 5;
2
int num2 = 5;
3
System.out.println(num1 > 0 && num2 > 0); // true

Es importante resaltar que al usar este operador, la segunda condición solo se evalúa si la primera condición es true. Esto se conoce como evaluación de cortocircuito.

Por ejemplo, si la primera condición es false, la segunda condición no se evalúa, ya que el resultado de la operación lógica será false de todas maneras.

1
int num1 = -5;
2
int num2 = 5;
3
System.out.println(num1 > 0 && num2 > 0); // false

Por otro lado, si queremos evaluar si al menos uno de los valores es mayor que cero, podemos utilizar el operador ||.

1
int num1 = -5;
2
int num2 = 5;
3
System.out.println(num1 > 0 || num2 > 0); // true

Para una operación lógica OR, la segunda condición solo se evalúa si la primera condición es false. Es decir, si la primera condición es true, carece de sentido evaluar la segunda condición, ya que el resultado de la operación lógica será true de todas maneras.

El siguiente caso es un ejemplo de evaluación de cortocircuito, donde la segunda condición no se evalúa.

1
int num1 = 5;
2
int num2 = 5;
3
System.out.println(num1 > 0 || num2 > 0); // true

Por último, si queremos invertir el valor de un booleano, podemos utilizar el operador de negación !.

1
boolean encendido = true;
2
System.out.println(!encendido); // false

Claro está que podemos combinar operadores de comparación y operadores lógicos para realizar operaciones más complejas.

Precedencia de operadores

Cuando combinamos operadores, debemos tener en cuenta que algunos operadores se evalúan antes que otros. Esencialmente, los operadores aritméticos se evalúan antes que los operadores de comparación, y los operadores de comparación se evalúan antes que los operadores lógicos.

Por ejemplo, si queremos evaluar si el resultado de una suma es mayor que cero, debemos utilizar paréntesis para indicar que la suma se evalúa antes que la comparación.

1
System.out.println((5 + 5) > 0 && (5 - 5) > 0); // false

En este caso, el orden de evaluación es el siguiente:

  • Primero, se evalúan la suma (5 + 5), cuyo resultado es 10, y la resta (5 - 5), cuyo resultado es 0.
  • Luego, se evalúa la comparación 10 > 0, cuyo resultado es true y 0 > 0, cuyo resultado es false.
  • Por último, se evalúa la operación lógica true && false, cuyo resultado es false.