logo

Mayor precedencia en Java

Cuando hablamos de precedencia en Java, lo primero que pensamos es el operador. Existen ciertas reglas definidas en Java para especificar el orden en el que se evalúan los operadores en una expresión. Prioridad del operador es un concepto para determinar el grupo de términos en una expresión. La precedencia de operadores es responsable de evaluar las expresiones. En Java , paréntesis() y Subíndice de matriz [] tienen la mayor precedencia en Java. Por ejemplo, la suma y la resta tienen mayor prioridad que los operadores de desplazamiento a la izquierda y desplazamiento a la derecha.

Mayor precedencia en Java

A continuación se muestra una tabla definida en la que el operador de menor precedencia se muestra en la parte superior.

Precedencia Operador Tipo asociatividad
1) =
+=
-=
*=
/=
%=
Asignación
tarea adicional
tarea de resta
Asignación de multiplicación
Asignación de división
Asignación de módulo
De derecha a izquierda
2) ? : Condicional ternario De derecha a izquierda
3) || O lógico De izquierda a derecha
4) && Y lógico De izquierda a derecha
5) | O inclusivo bit a bit De izquierda a derecha
6) ^ O exclusivo bit a bit De izquierda a derecha
7) & Bit a bit Y De izquierda a derecha
8) !=
==
Relacional no es igual a
Relacional es igual a
De izquierda a derecha
9) <
<=
>
>=
en vez de
Relacional menor que
Relacional menor o igual
Relacional mayor que
Relacional mayor o igual
Comparación de tipos (solo objetos)
De izquierda a derecha
10) >>
<<
>>>
Desplazamiento bit a derecha con extensión de signo
Desplazamiento bit a izquierda
Desplazamiento bit a derecha con extensión cero
De izquierda a derecha
11) -
+
Sustracción
Suma
De izquierda a derecha
12) *
/
%
Multiplicación
División
Módulo
De izquierda a derecha
13) -
+
~
!
( tipo)
menos unario
más unario
Complemento unario bit a bit
Negación lógica unaria
encasillamiento unario
De derecha a izquierda
14) ++
--
Post-incremento unario
Post-decremento unario
De derecha a izquierda
15) ·
()
[]
operador de punto
Paréntesis
Subíndice de matriz
De izquierda a derecha

Orden de precedencia

Cuando dos operadores comparten un único operando, el operador que tiene mayor precedencia va primero. Por ejemplo, x + y * z se trata como x + (y * z), mientras que x * y + z se trata como (x * y) + z porque el operador * tiene la mayor prioridad en comparación con el operador +.

"¿Cuál es la diferencia entre un león y un tigre?"

asociatividad

Asociativo es un concepto relacionado con los operadores que se aplican cuando en una expresión entran dos operadores con la misma precedencia. El concepto de asociatividad es muy útil para salir de esa situación. Supongamos que tenemos una expresión a + b - c (Los operadores + y - tienen la misma prioridad) , y esta expresión será tratada como (a + (b-c)) porque estos operadores son asociativos de derecha a izquierda. Por otro lado, a+++--b+c++ se tratará como ((a++)+((--b)+(c++))) porque los operadores unarios post-incremento y decremento son asociativos de derecha a izquierda.

A continuación se define un ejemplo para comprender cómo se evalúa una expresión utilizando el orden de precedencia y la asociatividad.

Expresión: x = 4 / 2 + 8 * 4 - ( 5+ 2 ) % 3

Solución:

1) En la expresión anterior, el operador de mayor precedencia es () . Entonces, el paréntesis va primero y se calcula primero.

x = 4 / 2 + 8 * 4 - 7 % 3

2) Ahora, /, * y % Los operadores tienen la misma precedencia y la más alta desde el + y - Aquí utilizamos el concepto de asociatividad para resolverlos. Los asociativos de estos operadores son de izquierda a derecha. Entonces, / El operador va primero y luego. * y % simultáneamente.

mil millones a millón

x = 2 + 8 * 4 - 7 % 3

x = 2 + 32 - 7 % 3

x = 2 + 32 - 1

3) Ahora, + y - Ambos operadores también tienen la misma precedencia y la asociatividad de estos operadores no se desplaza hacia la derecha. Entonces, + El operador irá primero y luego - iré.

x = 34 - 1

x = 33

listas de látex

HighestPrecedence.java

 //import classes import java.util.*; //creating HighestPrecedence class to evaluate the expression public class HighestPrecedence { //main() method starts public static void main(String[] args) { //initialize variables with default values int x = 2; int y = 5; int z = 12; //calculating exp1, exp2, and exp3 int exp1 = x +(z/x+(z%y)*(z-x)^2); int exp2 = z/x+y*x-(y+x)%z; int exp3 = 4/2+8*4-(5+2)%3; //printing the result System.out.println(exp1); System.out.println(exp2); System.out.println(exp3); } } 

Producción

Mayor precedencia en Java