logo

Precedència més alta a Java

Quan parlem de precedència a Java, l'operador és el primer en ment. Hi ha certes regles definides a Java per especificar l'ordre en què s'avaluen els operadors d'una expressió. Precedència de l'operador és un concepte per determinar el grup de termes d'una expressió. La precedència de l'operador és responsable d'avaluar les expressions. En Java , parèntesis () i Subíndex de matriu[] tenen la prioritat més alta a Java. Per exemple, la suma i la resta tenen una prioritat més alta que els operadors de desplaçament a l'esquerra i a la dreta.

Precedència més alta a Java

A continuació es mostra una taula definida en la qual es mostra l'operador de precedència més baixa a la part superior.

Precedència Operador Tipus Associativitat
1) =
+=
-=
*=
/=
%=
Encàrrec
Encàrrec addicional
Tasca de resta
Tasca de multiplicació
Encàrrec de la divisió
Assignació de mòduls
De dreta a esquerra
2) ? : Condicional ternari De dreta a esquerra
3) || OR lògic Esquerra a dreta
4) && I lògic Esquerra a dreta
5) | OR inclòs per bits Esquerra a dreta
6) ^ OR exclusiu per bits Esquerra a dreta
7) & I per bits Esquerra a dreta
8) !=
==
Relacional no és igual a
Relacional és igual a
Esquerra a dreta
9) <
<=
>
>=
en lloc de
Relacional menys que
Relacional menor o igual
Relacional més gran que
Relacional major o igual
Comparació de tipus (només objectes)
Esquerra a dreta
10) >>
<<
>>>
Desplaçament a la dreta per bits amb extensió de signe
Desplaçament a l'esquerra per bits
Desplaçament a la dreta bit a bit amb extensió zero
Esquerra a dreta
11) -
+
Resta
Addició
Esquerra a dreta
12) *
/
%
Multiplicació
Divisió
Mòdul
Esquerra a dreta
13) -
+
~
!
(tipus)
Menys unari
Plus unari
Complement unari per bits
Negació lògica unària
Tipografia unària
De dreta a esquerra
14) ++
--
Post-increment unari
Post-decrement unari
De dreta a esquerra
15) ·
()
[]
Operador de punts
Parèntesis
Subíndex de matriu
Esquerra a dreta

Ordre de preferència

Quan dos operadors comparteixen un únic operand, l'operador que té la prioritat més alta passa primer. Per exemple, x + y * z es tracta com x + (y * z), mentre que x * y + z es tracta com (x * y) + z perquè l'operador * té la precedència més alta en comparació de l'operador +.

scan.nextstring java

Associativitat

L'associatiu és un concepte relacionat amb els operadors aplicats quan dos operadors amb la mateixa precedència entren en una expressió. El concepte d'associativitat és molt útil per sortir d'aquesta situació. Suposem que tenim una expressió a + b - c (els operadors + i - tenen la mateixa prioritat) , i aquesta expressió es tractarà com (a + (b - c)) perquè aquests operadors són associatius de dreta a esquerra. D'altra banda, a+++--b+c++ es tractarà com ((a++)+((--b)+(c++))) perquè els operadors unaris de post-increment i decrement són associatius de dreta a esquerra.

A continuació es defineix un exemple per entendre com s'avalua una expressió utilitzant l'ordre de precedència i l'associativitat?

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

Solució:

1) A l'expressió anterior, l'operador de prioritat més alta és () . Per tant, el parèntesi va primer i es calcula primer.

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

2) Ara, /, * i % els operadors tenen la mateixa precedència i més alt que el + i - Aquí, fem servir el concepte d'associativitat per resoldre'ls. Els associats d'aquests operadors són d'esquerra a dreta. Tan, / l'operador va primer i després * i % simultàniament.

x = 2 + 8 * 4 - 7 % 3

x = 2 + 32 - 7 % 3

desviació estàndard dels pandas

x = 2 + 32 - 1

3) Ara, + i - els dos operadors també tenen la mateixa prioritat, i l'associativitat d'aquests operadors no sigui cap a la dreta. Tan, + l'operador anirà primer i després - anirem.

x = 34 - 1

x = 33

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); } } 

Sortida

cadena adjunta java
Precedència més alta a Java