Amikor a Java elsőbbségéről beszélünk, az operátor jut először eszünkbe. A Java-ban meghatározott szabályok határozzák meg a kifejezés operátorainak kiértékelési sorrendjét. Üzemeltetői elsőbbség egy kifejezésben szereplő kifejezések csoportjának meghatározására szolgáló fogalom. Az operátori elsőbbség felelős a kifejezések kiértékeléséért. Ban ben Jáva , zárójel() és Tömb alsó indexe[] a legmagasabb prioritású a Java nyelven. Például az összeadás és kivonás magasabb prioritású, mint a balra eltolás és a jobbra eltolás operátorok.
Az alábbiakban egy táblázat látható, amelyben a legalacsonyabb prioritású operátor jelenik meg a tetején.
Elsőbbség | Operátor | típus | Az asszociativitás |
---|---|---|---|
1) | = += -= *= /= %= | Feladat Kiegészítési feladat Kivonás hozzárendelés Szorzási feladat Osztály beosztás Modulus hozzárendelés | Jobbról balra |
2) | ? : | Terner feltételes | Jobbról balra |
3) | || | Logikus VAGY | Balról jobbra |
4) | && | Logikus ÉS | Balról jobbra |
5) | | | Bitenkénti bezáró VAGY | Balról jobbra |
6) | ^ | Bitenkénti exkluzív VAGY | Balról jobbra |
7) | & | Bitenként ÉS | Balról jobbra |
8) | != == | A relációs nem egyenlő A relációs egyenlő | Balról jobbra |
9) | < <= > >= Például az=> | Relációs kevesebb, mint Relációs kisebb vagy egyenlő Relációs nagyobb, mint Relációs nagyobb vagy egyenlő Típus-összehasonlítás (csak objektumok) | Balról jobbra |
10) | >> << >>> | Bitenkénti jobbra eltolás jelkiterjesztéssel Bitenkénti balra eltolás Bitenkénti jobb eltolás nulla kiterjesztéssel | Balról jobbra |
tizenegy) | - + | Kivonás Kiegészítés | Balról jobbra |
12) | * / % | Szorzás Osztály Modulus | Balról jobbra |
13) | - + ~ ! ( típus) | Egyedi mínusz Egyedülálló plusz Unáris bitenkénti kiegészítés Egyedi logikai tagadás Unary typecast | Jobbról balra |
14) | ++ -- | Unáris utónövekmény Unáris utócsökkentés | Jobbról balra |
tizenöt) | · () [] | Pont operátor Zárójelek Tömb alsó indexe | Balról jobbra |
Elsőbbségi sorrend
Ha két operátor osztozik egy operanduson, akkor a legmagasabb prioritású operátor kerül először. Például az x + y * z mint x + (y * z), míg az x * y + z mint (x * y) + z, mivel a * operátornak van a legmagasabb prioritása a + operátorhoz képest.
singleton design
Az asszociativitás
Az asszociatív egy olyan fogalom, amely azokra az operátorokra vonatkozik, amelyeket akkor alkalmaznak, ha egy kifejezésben két azonos prioritású operátor szerepel. Az asszociativitás koncepciója nagyon hasznos, hogy kilépjünk ebből a helyzetből. Tegyük fel, hogy van egy a + b - c kifejezésünk (a + és - operátorok prioritása azonos) , és ezt a kifejezést a rendszer így kezeli (a + (b - c)) mert ezek az operátorok jobbról balra asszociatívak. Másrészt az a+++--b+c++ úgy lesz kezelve ((a++)+((--b)+(c++))) mert az unáris utónövekmény és dekrement operátorok jobbról balra asszociatívak.
Az alábbiakban egy példát definiálunk, hogy megértsük, hogyan kerül kiértékelésre egy kifejezés az elsőbbségi sorrend és az asszociativitás használatával?
Kifejezés: x = 4/2 + 8 * 4 - ( 5+ 2 ) % 3
Megoldás:
1) A fenti kifejezésben a legmagasabb prioritású operátor az () . Tehát a zárójel megy először, és először számol.
karakterlánc átalakítása int-re
x = 4 / 2 + 8 * 4 - 7 % 3
2) Most, /, * és % operátorok ugyanazt a prioritást és a legmagasabb a + és - Itt az asszociativitás fogalmát használjuk ezek megoldására. Ezeknek az operátoroknak az asszociációja balról jobbra halad. Így, / az operátor először, majd utána megy * és % egyidejűleg.
x = 2 + 8 * 4 - 7 % 3
x = 2 + 32 - 7 % 3
x = 2 + 32 - 1
3) Most, + és - mindkét operátornak ugyanaz a prioritása, és ezeknek az operátoroknak az asszociativitása, nehogy jobbra. Így, + a kezelő először, majd csak utána - fog menni.
xampp alternatíva
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); } }
Kimenet