La precedencia de los operadores determina el orden en el que se evalúan los operadores de una expresión.
Antes de comenzar a leer este artículo, debe tener un conocimiento básico de los operadores de Java.
Ahora, eche un vistazo a la declaración a continuación:
int myInt = 12 - 4 * 2;
¿Cuál será el valor de myInt? ¿Será (12 - 4)*2
, es decir 16
,? ¿O será 12 - (4 * 2)
, es decir 4
,?
Cuando dos operadores comparten un operando común, 4
en este caso, se opera primero el operador con mayor precedencia.
En Java, la precedencia de *
es mayor que la de -
. Por lo tanto, la multiplicación se realiza antes de la resta y el valor de myInt será 4.
Tabla de precedencia de operadores
La siguiente tabla enumera la precedencia de los operadores en Java; cuanto más alto aparezca en la tabla, mayor será su precedencia.
Prioridad del operador de JavaOperadores | Precedencia |
---|---|
incremento y decremento postfix | ++ -- |
prefijo incremento y decremento, y unario | ++ -- + - ~ ! |
multiplicativo | * / % |
aditivo | + - |
cambio | << >> >>> |
relacional | < > <= >= instanceof |
igualdad | == != |
bit a bit Y | & |
OR exclusivo bit a bit | ^ |
OR inclusivo bit a bit | | |
Y lógico | && |
OR lógico | || |
ternario | ? : |
asignación | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Ejemplo: precedencia del operador
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Salida :
2
La precedencia del operador del prefijo ++
es mayor que la del -
operador de resta. Por lo tanto,
resultado = a - ++ c - ++ b;
es equivalente a
resultado = a - (++ c) - (++ b);
Cuando se trata de varios operadores y operandos en una sola expresión, puede utilizar paréntesis como en el ejemplo anterior para mayor claridad. La expresión entre paréntesis se evalúa primero.
Asociatividad de operadores en Java
Si una expresión tiene dos operadores con precedencia similar, la expresión se evalúa según su asociatividad (ya sea de izquierda a derecha o de derecha a izquierda). Pongamos un ejemplo.
a = b = c;
Aquí, el valor de c se asigna a la variable b. Entonces se asigna el valor de b a la variable a. ¿Por qué? Es porque la asociatividad del operador = es de derecha a izquierda.
La siguiente tabla muestra la asociatividad de los operadores de Java junto con su asociatividad.
Precedencia y asociatividad del operador JavaOperadores | Precedencia | Asociatividad |
---|---|---|
incremento y decremento postfix | ++ -- | de izquierda a derecha |
prefijo incremento y decremento, y unario | ++ -- + - ~ ! | De derecha a izquierda |
multiplicativo | * / % | de izquierda a derecha |
aditivo | + - | de izquierda a derecha |
cambio | << >> >>> | de izquierda a derecha |
relacional | < > <= >= instanceof | de izquierda a derecha |
igualdad | == != | de izquierda a derecha |
bit a bit Y | & | de izquierda a derecha |
OR exclusivo bit a bit | ^ | de izquierda a derecha |
OR inclusivo bit a bit | | | de izquierda a derecha |
Y lógico | && | de izquierda a derecha |
OR lógico | || | de izquierda a derecha |
ternario | ? : | De derecha a izquierda |
asignación | = += -= *= /= %= &= ^= |= <<= >>= >>>= | De derecha a izquierda |
No necesitas memorizar todo aquí. La mayoría de las veces, la precedencia y asociatividad de los operadores tiene sentido en sí misma. Siempre puede volver a este artículo como referencia en caso de duda. Además, puede usar paréntesis si cree que hace que su código sea más fácil de entender.