Un operador es un símbolo que combina, transforma o compara uno o varios valores.
Ya sabemos crear variables e incluso dejar que Java infiera sus tipos. Una variable por sí sola es solo un dato guardado en un cajón; la programación consiste en hacer cosas con esos datos.
Para eso utilizamos los operadores.
Operadores aritméticos
Son los de toda la vida. Sirven para hacer matemáticas básicas.
| Operador | Descripción | Ejemplo (a=10, b=3) |
|---|---|---|
+ | Suma | a + b -> 13 |
- | Resta | a - b -> 7 |
* | Multiplicación | a * b -> 30 |
/ | División | a / b -> 3 (¡Ojo aquí!) |
% | Módulo (Resto) | a % b -> 1 |
La trampa de la división entera
Fíjate en el ejemplo de la tabla: 10 / 3 da 3, no 3.3333.
En Java, si divides dos enteros, el resultado es un entero. Se truncan los decimales. Da igual si guardas el resultado en un double.
int a = 5;
int b = 2;
double resultado = a / b;
System.out.println(resultado); // Imprime 2.0 (¡Ups!)Para obtener decimales, al menos uno de los operandos debe ser decimal (float o double).
double resultado = (double) a / b; // Casting explícito
// O el truco rápido:
double resultado2 = a / 2.0; // Al dividir por un literal double, el resultado es doubleIncremento y decremento (++, --)
Muy usados en bucles. Aumentan o disminuyen la variable en 1.
a++(Post-incremento): Usa el valor y luego suma.++a(Pre-incremento): Suma y luego usa el valor.
Operadores relacionales
Sirven para comparar dos valores. El resultado de estas operaciones siempre es un boolean (true o false).
| Operador | Significado | Ejemplo |
|---|---|---|
== | Igualdad | 5 == 5 -> true |
!= | Desigualdad (Distinto) | 5 != 3 -> true |
> | Mayor que | 5 > 10 -> false |
< | Menor que | 5 < 10 -> true |
>= | Mayor o igual que | 5 >= 5 -> true |
<= | Menor o igual que | 4 <= 5 -> true |
¡Peligro con Objetos!
El operador == compara valores en primitivos. En objetos (como String), comprueba si ambas referencias apuntan al mismo objeto.
Para comparar el contenido de un texto, usa .equals() en lugar de ==. Lo veremos a fondo en el tema de strings.
Operadores lógicos
Permiten combinar varias condiciones booleanas. Son la base de la toma de decisiones compleja.
| Operador | Nombre | Descripción |
|---|---|---|
&& | AND (Y) | Devuelve true si ambos son verdaderos. |
| ` | ` | |
! | NOT (No) | Invierte el valor (!true es false). |
El “cortocircuito” (short-circuit evaluation)
Esto es una característica técnica muy importante de Java (y C++).
- En un AND (
&&): Si la primera condición esfalse, Java NO evalúa la segunda, porque ya sabe que el resultado total será falso. - En un OR (
||): Si la primera condición estrue, Java NO evalúa la segunda, porque ya sabe que el resultado total será verdadero.
Esto ayuda a escribir código seguro y evitar errores:
// Imagina que 'usuario' es null.
// Si no existiera el cortocircuito, usuario.esAdmin() lanzaría un error.
if (usuario != null && usuario.esAdmin()) {
// Entramos aquí de forma segura
}El operador ternario (? :)
Es el único operador que toma tres operandos. Es básicamente un if-else condensado en una sola línea.
Sintaxis: condición ? valor_si_verdadero : valor_si_falso
int edad = 18;
String estado = (edad >= 18) ? "Mayor de edad" : "Menor de edad";Úsalo con moderación. Es genial para asignaciones simples, pero si anidas varios ternarios (? : ? :), el código se vuelve ilegible.