Kad mēs runājam par Java prioritāti, vispirms prātā nāk operators. Java ir definēti noteikti noteikumi, lai norādītu secību, kādā tiek novērtēti izteiksmes operatori. Operatora prioritāte ir jēdziens terminu grupas noteikšanai izteiksmē. Operatora prioritāte ir atbildīga par izteiksmju novērtēšanu. In Java , iekavas () un Masīva apakšindekss[] ir augstākā prioritāte Java. Piemēram, saskaitīšanai un atņemšanai ir augstāka prioritāte nekā maiņas pa kreisi un pa labi operatoriem.
Zemāk ir definēta tabula, kurā zemākās prioritātes operators tiek rādīts tās augšpusē.
Priekšroka | Operators | Tips | Asociativitāte |
---|---|---|---|
1) | = += -= *= /= %= | Piešķiršana Papildinājuma uzdevums Atņemšanas uzdevums Reizināšanas uzdevums Divīzijas uzdevums Moduļa uzdevums | No labās uz kreiso |
2) | ? : | Trīskāršs nosacījums | No labās uz kreiso |
3) | || | Loģiski VAI | No kreisās uz labo |
4) | && | Loģiski UN | No kreisās uz labo |
5) | | | Ieskaitot bitus VAI | No kreisās uz labo |
6) | ^ | Bitu ekskluzīvs VAI | No kreisās uz labo |
7) | & | Bitu UN | No kreisās uz labo |
8) | != == | Relācijas nav vienādas ar Relācijas ir vienādas ar | No kreisās uz labo |
9) | < <= > >= instanceof=> | Relāciju mazāk nekā Relācijas ir mazākas par vai vienādas Relāciju lielāks par Relācijas ir lielākas vai vienādas Veidu salīdzinājums (tikai objekti) | No kreisās uz labo |
10) | >> << >>> | Bitu pa labi nobīde ar zīmes paplašinājumu Bitu pa kreisi nobīde Bitu pa labi nobīde ar nulles pagarinājumu | No kreisās uz labo |
vienpadsmit) | - + | Atņemšana Papildinājums | No kreisās uz labo |
12) | * / % | Reizināšana Divīzija Modulus | No kreisās uz labo |
13) | - + ~ ! (tips) | Vienots mīnuss Vienots pluss Unārs bitu papildinājums Unārs loģisks noliegums Unāra tipa apraide | No labās uz kreiso |
14) | ++ -- | Unārs pēcpieaugums Unārs pēcsamazinājums | No labās uz kreiso |
piecpadsmit) | · () [] | Punktu operators Iekavas Masīva apakšindekss | No kreisās uz labo |
Prioritātes secība
Ja divi operatori koplieto vienu operandu, pirmais ir operators ar augstāko prioritāti. Piemēram, x + y * z tiek uzskatīts par x + (y * z), savukārt x * y + z tiek uzskatīts par (x * y) + z, jo operatoram * ir visaugstākā prioritāte salīdzinājumā ar operatoru +.
divi pret vienu multipleksoru
Asociativitāte
Asociatīvais ir jēdziens, kas saistīts ar operatoriem, kas tiek lietoti, ja izteiksmē ir divi operatori ar vienādu prioritāti. Asociatīvās koncepcija ir ļoti noderīga, lai izietu no šīs situācijas. Pieņemsim, ka mums ir izteiksme a + b - c (+ un - operatoriem ir vienāda prioritāte) , un šī izteiksme tiks uzskatīta par (a + (b - c)) jo šie operatori ir asociatīvi no labās puses uz kreiso. No otras puses, a+++--b+c++ tiks uzskatīts par ((a++)+((--b)+(c++))) jo unārie post-increment un decrement operatori ir no labās puses uz kreiso asociatīvo.
Tālāk ir definēts piemērs, lai saprastu, kā izteiksme tiek novērtēta, izmantojot prioritātes secību un asociativitāti?
Izteiksme: x = 4 / 2 + 8 * 4 - ( 5 + 2 ) % 3
Risinājums:
1) Iepriekš minētajā izteiksmē augstākās prioritātes operators ir () . Tātad, vispirms ir iekava un vispirms tiek aprēķināts.
pasūtījuma koka šķērsošana
x = 4 / 2 + 8 * 4 - 7 % 3
2) Tagad, /, * un % operatoriem ir tāda pati prioritāte un augstākais no + un - Šeit mēs izmantojam asociativitātes koncepciju, lai tās atrisinātu. Šo operatoru asociācijas ir no kreisās uz labo pusi. Tātad, / operators dodas vispirms un tad * un % vienlaikus.
x = 2 + 8 * 4 - 7 % 3
x = 2 + 32 - 7 % 3
x = 2 + 32 - 1
3) Tagad, + un - operatoriem abiem arī ir vienāda prioritāte un šo operatoru asociativitāte pret labo pusi. Tātad, + operators dosies vispirms un pēc tam - ies.
attēlu izlīdzināšana css
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); } }
Izvade