Java / Operadores Asignación
Operadores de asignación en Java
Los operadores de asignación se utilizan para asignar valores a las variables.
| Operador | Ejemplo | Equivalente | Descripción |
|---|---|---|---|
= | x = 5 | x = 5 | Asigna un valor a la variable |
+= | x += 3 | x = x + 3 | Suma y asigna el resultado |
-= | x -= 3 | x = x - 3 | Resta y asigna el resultado |
*= | x *= 3 | x = x * 3 | Multiplica y asigna el resultado |
/= | x /= 3 | x = x / 3 | Divide y asigna el resultado |
%= | x %= 3 | x = x % 3 | Calcula el resto y asigna el resultado |
&= | x &= 3 | x = x & 3 | AND bit a bit y asigna el resultado |
\|= | x \|= 3 | x = x \| 3 | OR bit a bit y asigna el resultado |
^= | x ^= 3 | x = x ^ 3 | XOR bit a bit y asigna el resultado |
>>= | x >>= 3 | x = x >> 3 | Desplazamiento a la derecha y asigna el resultado |
<<= | x <<= 3 | x = x << 3 | Desplazamiento a la izquierda y asigna el resultado |
Los últimos 5 son operadores de asignación bit a bit, es decir, operan sobre los bits individuales del número en binario.
AND bit a bit - &=
Compara cada bit de ambos valores. El resultado es 1 solo si ambos bits son 1.
1
2
3
4
x = 6 → 0110
y = 3 → 0011
------
x &= 3 → 0010 = 2
OR bit a bit - |=
El resultado es 1 si al menos uno de los bits es 1.
1
2
3
4
x = 6 → 0110
y = 3 → 0011
------
x |= 3 → 0111 = 7
XOR bit a bit - ^=
El resultado es 1 si los bits son distintos entre sí.
1
2
3
4
x = 6 → 0110
y = 3 → 0011
------
x ^= 3 → 0101 = 5
Desplazamiento a la derecha - >>=
Mueve los bits hacia la derecha n posiciones. Equivale a dividir entre $2^n$ (descartando decimales).
1
2
x = 8 → 1000
x >>= 3 → 0001 = 1 (8 / 2³ = 1)
Desplazamiento a la izquierda - <<=
El resultado es 1 si los bits son distintos entre sí.
1
2
x = 2 → 0010
x <<= 3 → 10000 = 16 (2 × 2³ = 16)
En la práctica,
&=,|=y^=se usan mucho para manipular flags y máscaras de bits. Los de desplazamiento (>>=,<<=) aparecen más en código de bajo nivel o cuando se optimizan operaciones de multiplicación/división por potencias de 2.
Operadores de comparación
Los operadores de comparación se utilizan para comparar dos valores (o variables). Esto es importante, ya que nos ayuda a encontrar respuestas y tomar decisiones.
El valor de retorno de una comparación es o
trueofalse
| Operador | Nombre | Ejemplo | Descripción |
|---|---|---|---|
== | Igual a | x == y | Devuelve true si ambos valores son iguales |
!= | Distinto de | x != y | Devuelve true si los valores son diferentes |
> | Mayor que | x > y | Devuelve true si x es estrictamente mayor que y |
< | Menor que | x < y | Devuelve true si x es estrictamente menor que y |
>= | Mayor o igual que | x >= y | Devuelve true si x es mayor que y o igual a él |
<= | Menor o igual que | x <= y | Devuelve true si x es menor que y o igual a él |
1
2
3
4
int edad = 18;
System.out.println(edad >= 18); // true
System.out.println(edad < 18); // false
Operadores lógicos
Al igual que con los operadores de comparación, los operadores lógicos devuelven true o false.
Los operadores lógicos se utilizan para determinar la lógica entre variables o valores, combinando múltiples condiciones
| Operador | Nombre | Descripción | Ejemplo |
|---|---|---|---|
&& | AND lógico | Devuelve true si ambas condiciones son true | x < 5 && x < 10 |
|| | OR lógico | Devuelve true si alguna condición es true | x < 5 \|\| x < 4 |
! | NOT lógico | Invierte el resultado booleano | !(x < 5 && x < 10) |
El operador ! simplemente invierte el valor booleano: convierte true en false y viceversa.
1
2
3
4
5
boolean a = true;
boolean b = false;
!a // false
!b // true
Un detalle útil: Java usa evaluación en cortocircuito (short-circuit evaluation):
&&— si la primera condición esfalse, la segunda no se evalúa (ya no puede ser true).||— si la primera condición estrue, la segunda no se evalúa (ya es suficiente).