3. Operadores en Java
Operadores en Java
Section titled “Operadores en Java”Los operadores son símbolos especiales que realizan operaciones específicas sobre uno, dos o tres operandos y luego devuelven un resultado. Java proporciona una amplia variedad de operadores que se pueden clasificar en varias categorías según su funcionalidad.
2.2.1 Operadores aritméticos
Section titled “2.2.1 Operadores aritméticos”Los operadores aritméticos se utilizan para realizar operaciones matemáticas básicas.
| Operador | Descripción | Ejemplo | Resultado |
|---|---|---|---|
| Suma | | 15 |
| Resta | | 5 |
| Multiplicación | | 50 |
| División | | 2 |
| Módulo (resto de la división) | | 1 |
Precedencia de operadores aritméticos
Section titled “Precedencia de operadores aritméticos”Los operadores aritméticos siguen las reglas matemáticas estándar de precedencia:
- Paréntesis
() - Multiplicación
*, división/y módulo%(de izquierda a derecha) - Suma
+y resta-(de izquierda a derecha)
int resultado = 10 + 5 * 2; // resultado = 20, no 30Operador de concatenación de cadenas
Section titled “Operador de concatenación de cadenas”El operador + también se utiliza para concatenar cadenas:
String nombre = "Juan";String saludo = "Hola, " + nombre + "!"; // saludo = "Hola, Juan!"2.2.2 Operadores relacionales
Section titled “2.2.2 Operadores relacionales”Los operadores relacionales comparan dos valores y devuelven un resultado booleano (true o false).
| Operador | Descripción | Ejemplo | Resultado |
|---|---|---|---|
| Igual a | | true |
| Diferente de | | true |
| Mayor que | | true |
| Menor que | | true |
| Mayor o igual que | | true |
| Menor o igual que | | true |
Operador instanceof
Section titled “Operador instanceof”El operador instanceof verifica si un objeto es una instancia de un tipo específico (clase, subclase o interfaz):
String texto = "Hola";boolean esString = texto instanceof String; // trueboolean esObject = texto instanceof Object; // true (String es subclase de Object)2.2.3 Operadores lógicos
Section titled “2.2.3 Operadores lógicos”Los operadores lógicos realizan operaciones booleanas y devuelven un resultado booleano (true o false).
| Operador | Descripción | Ejemplo | Resultado |
|---|---|---|---|
| AND lógico | | true |
| OR lógico | | true |
| NOT lógico | | false |
Tabla de verdad para operadores lógicos
Section titled “Tabla de verdad para operadores lógicos”| A | B | A && B |
|---|---|---|
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
| A | B | A || B |
|---|---|---|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
| A | !A |
|---|---|
| true | false |
| false | true |
Evaluación de cortocircuito
Section titled “Evaluación de cortocircuito”Java utiliza evaluación de cortocircuito para los operadores lógicos:
- Para
&&: Si el primer operando esfalse, el segundo operando no se evalúa porque el resultado ya seráfalse. - Para
||: Si el primer operando estrue, el segundo operando no se evalúa porque el resultado ya serátrue.
// Ejemplo de cortocircuito con &&int x = 5;if (x > 0 && 10 / x > 1) { // No hay división por cero cuando x es 0 System.out.println("Condición cumplida");}Operadores lógicos a nivel de bits
Section titled “Operadores lógicos a nivel de bits”Java también proporciona operadores lógicos a nivel de bits que operan sobre representaciones binarias de valores enteros:
| Operador | Descripción | Ejemplo | Resultado |
|---|---|---|---|
| AND a nivel de bits | | 1 (0101 & 0011 = 0001) |
| OR a nivel de bits | | 7 (0101 | 0011 = 0111) |
| XOR a nivel de bits | | 6 (0101 ^ 0011 = 0110) |
| Complemento a nivel de bits | | -6 (para un int de 32 bits) |
| Desplazamiento a la izquierda | | 10 (0101 << 1 = 1010) |
| Desplazamiento a la derecha con signo | | 2 (0101 >> 1 = 0010) |
| Desplazamiento a la derecha sin signo | | Valor positivo grande |
2.2.4 Operadores de asignación
Section titled “2.2.4 Operadores de asignación”Los operadores de asignación se utilizan para asignar valores a variables. El operador básico de asignación es =, pero Java también proporciona operadores compuestos que combinan una operación aritmética o de bits con la asignación.
| Operador | Descripción | Ejemplo | Equivalente a |
|---|---|---|---|
| Asignación simple | | |
| Suma y asignación | | |
| Resta y asignación | | |
| Multiplicación y asignación | | |
| División y asignación | | |
| Módulo y asignación | | |
| AND a nivel de bits y asignación | | |
| OR a nivel de bits y asignación | | |
| XOR a nivel de bits y asignación | | |
| Desplazamiento a la izquierda y asignación | | |
| Desplazamiento a la derecha con signo y asignación | | |
| Desplazamiento a la derecha sin signo y asignación | | |
Asignación en cadena
Section titled “Asignación en cadena”Java permite asignar el mismo valor a múltiples variables en una sola instrucción:
int a, b, c;a = b = c = 10; // Todas las variables tienen el valor 102.2.5 Operadores unarios y de incremento/decremento
Section titled “2.2.5 Operadores unarios y de incremento/decremento”Los operadores unarios realizan operaciones sobre un solo operando.
| Operador | Descripción | Ejemplo | Resultado |
|---|---|---|---|
| Operador unario positivo (opcional) | | 5 |
| Operador unario negativo (cambia el signo) | | -5 |
| Incremento (aumenta en 1) | | 6 |
| Decremento (disminuye en 1) | | 4 |
| Negación lógica (invierte un valor booleano) | | false |
Operadores de incremento y decremento
Section titled “Operadores de incremento y decremento”Los operadores ++ y -- pueden usarse como prefijo (antes de la variable) o como sufijo (después de la variable), con comportamientos ligeramente diferentes:
Cuando se usa como prefijo, el incremento o decremento se realiza antes de evaluar la expresión.
int a = 5;int b = ++a; // a se incrementa a 6, luego b se establece en 6// Ahora a = 6, b = 6Cuando se usa como sufijo, el incremento o decremento se realiza después de evaluar la expresión.
int a = 5;int b = a++; // b se establece en 5, luego a se incrementa a 6// Ahora a = 6, b = 5Ejemplo práctico
Section titled “Ejemplo práctico”public class OperadoresDemo { public static void main(String[] args) { // Operadores aritméticos int suma = 5 + 3; // 8 int resta = 5 - 3; // 2 int mult = 5 * 3; // 15 int div = 5 / 3; // 1 (división entera) double divExacta = 5.0 / 3.0; // 1.6666666666666667 int modulo = 5 % 3; // 2
// Operadores relacionales boolean igual = (5 == 3); // false boolean noIgual = (5 != 3); // true boolean mayor = (5 > 3); // true boolean menor = (5 < 3); // false boolean mayorIgual = (5 >= 5); // true boolean menorIgual = (5 <= 3); // false
// Operadores lógicos boolean and = true && false; // false boolean or = true || false; // true boolean not = !true; // false
// Operadores de asignación int x = 10; x += 5; // x = 15 x -= 3; // x = 12 x *= 2; // x = 24 x /= 4; // x = 6 x %= 4; // x = 2
// Operadores unarios y de incremento/decremento int a = 5; int b = ++a; // a = 6, b = 6 int c = a++; // c = 6, a = 7 int d = --a; // a = 6, d = 6 int e = a--; // e = 6, a = 5
// Operadores a nivel de bits int bits1 = 5 & 3; // 1 (0101 & 0011 = 0001) int bits2 = 5 | 3; // 7 (0101 | 0011 = 0111) int bits3 = 5 ^ 3; // 6 (0101 ^ 0011 = 0110) int bits4 = ~5; // -6 (complemento a uno) int bits5 = 5 << 1; // 10 (0101 << 1 = 1010) int bits6 = 5 >> 1; // 2 (0101 >> 1 = 0010)
System.out.println("Operadores aritméticos:"); System.out.println("Suma: " + suma); System.out.println("Resta: " + resta); System.out.println("Multiplicación: " + mult); System.out.println("División entera: " + div); System.out.println("División exacta: " + divExacta); System.out.println("Módulo: " + modulo);
System.out.println("Operadores de incremento/decremento:"); System.out.println("Valores finales: a = " + a + ", b = " + b + ", c = " + c + ", d = " + d + ", e = " + e);
System.out.println("Operadores a nivel de bits:"); System.out.println("AND: " + bits1); System.out.println("OR: " + bits2); System.out.println("XOR: " + bits3); System.out.println("NOT: " + bits4); System.out.println("Desplazamiento izquierda: " + bits5); System.out.println("Desplazamiento derecha: " + bits6); }}Precedencia de operadores en Java
Section titled “Precedencia de operadores en Java”La precedencia de operadores determina el orden en que se evalúan las expresiones. Aquí está la lista de precedencia de operadores en Java, de mayor a menor:
- Operadores postfijos:
expr++,expr-- - Operadores unarios:
++expr,--expr,+expr,-expr,~,! - Multiplicación, división, módulo:
*,/,% - Suma, resta:
+,- - Desplazamiento de bits:
<<,>>,>>> - Relacionales:
<,>,<=,>=,instanceof - Igualdad:
==,!= - AND a nivel de bits:
& - XOR a nivel de bits:
^ - OR a nivel de bits:
| - AND lógico:
&& - OR lógico:
|| - Operador ternario:
? : - Asignación:
=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=,>>>=