Operatoriaus pirmenybė nustato eilės tvarką, kuria vertinami išraiškos operatoriai.
Prieš pradėdami skaityti šį straipsnį, turėtumėte turėti pagrindinių „Java“ operatorių žinių.
Pažvelkite į toliau pateiktą teiginį:
int myInt = 12 - 4 * 2;
Kokia bus „myInt“ vertė? Ar tai bus (12 - 4)*2
, tai yra 16
? Arba bus 12 - (4 * 2)
, tai yra 4
?
Kai du operatoriai turi bendrą operandą, 4
šiuo atveju pirmiausia valdomas didžiausio prioriteto operatorius.
„Java“ pirmenybė *
yra didesnė nei -
. Taigi dauginimas atliekamas prieš atimant, o myInt vertė bus 4.
Operatoriaus pirmenybės lentelė
Žemiau esančioje lentelėje pateikiama „Java“ operatorių pirmenybė; aukščiau jis rodomas lentelėje, tuo didesnis jo prioritetas.
„Java“ operatoriaus pirmenybėOperatoriai | Pirmenybė |
---|---|
postfix prieaugis ir sumažėjimas | ++ -- |
priešdėlio prieaugis ir nuosmukis ir unarinis | ++ -- + - ~ ! |
dauginamasis | * / % |
priedas | + - |
pamainą | << >> >>> |
santykinis | < > <= >= instanceof |
lygybė | == != |
bitų IR | & |
bitų išimtinis ARBA | ^ |
bitų imtinai ARBA | | |
logiška IR | && |
logiška ARBA | || |
trikampis | ? : |
užduotis | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Pavyzdys: operatoriaus pirmenybė
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Išvestis :
2
Priešdėlio operatoriaus pirmenybė ++
yra didesnė nei -
atimties operatoriaus. Taigi,
rezultatas = a - ++ c - ++ b;
yra lygiavertis
rezultatas = a - (++ c) - (++ b);
Kai kalbate su keliais operatoriais ir operandais vienoje išraiškoje, aiškumo dėlei galite naudoti skliaustus, kaip nurodyta aukščiau pateiktame pavyzdyje. Pirmiausia įvertinama skliaustų išraiška.
Operatorių asociacija „Java“
Jei išraiška turi du panašaus prioriteto operatorius, išraiška vertinama pagal jos asociatyvumą (arba iš kairės į dešinę, arba iš dešinės į kairę). Paimkime pavyzdį.
a = b = c;
Čia c reikšmė priskiriama kintamajam b. Tada b reikšmė priskiriama kintamajam a. Kodėl? Taip yra todėl, kad = operatoriaus asociatyvumas yra iš dešinės į kairę.
Žemiau esančioje lentelėje parodytas „Java“ operatorių asociatyvumas kartu su jų asociatyvumu.
„Java“ operatoriaus pirmenybė ir asociatyvumasOperatoriai | Pirmenybė | Asociatyvumas |
---|---|---|
postfix prieaugis ir sumažėjimas | ++ -- | iš kairės į dešinę |
priešdėlio prieaugis ir nuosmukis ir unarinis | ++ -- + - ~ ! | iš dešinės į kairę |
dauginamasis | * / % | iš kairės į dešinę |
priedas | + - | iš kairės į dešinę |
pamainą | << >> >>> | iš kairės į dešinę |
santykinis | < > <= >= instanceof | iš kairės į dešinę |
lygybė | == != | iš kairės į dešinę |
bitų IR | & | iš kairės į dešinę |
bitų išimtinis ARBA | ^ | iš kairės į dešinę |
bitų imtinai ARBA | | | iš kairės į dešinę |
logiška IR | && | iš kairės į dešinę |
logiška ARBA | || | iš kairės į dešinę |
trikampis | ? : | iš dešinės į kairę |
užduotis | = += -= *= /= %= &= ^= |= <<= >>= >>>= | iš dešinės į kairę |
Čia nereikia visko įsiminti. Dažniausiai operatorių prioritetas ir asociatyvumas savaime turi prasmę. Jei kyla abejonių, visada galite grįžti į šį straipsnį. Be to, galite naudoti skliaustus, jei manote, kad tai lengviau supranta jūsų kodą.