Kai kalbame apie „Java“ pirmenybę, pirmiausia turime omenyje operatorių. „Java“ yra apibrėžtos tam tikros taisyklės, nurodančios tvarką, kuria įvertinami išraiškos operatoriai. Operatoriaus pirmenybė yra terminų grupės nustatymo sąvoka išraiškoje. Operatoriaus pirmenybė yra atsakinga už išraiškų įvertinimą. Į Java , skliausteliuose () ir Masyvo indeksas[] turi aukščiausią pirmenybę Java. Pavyzdžiui, sudėjimas ir atimtis turi didesnį pirmenybę nei poslinkio į kairę ir dešinę operatoriai.
Žemiau yra apibrėžta lentelė, kurios viršuje rodomas žemiausio prioriteto operatorius.
Pirmenybė | operatorius | Tipas | Asociatyvumas |
---|---|---|---|
1) | = += -= *= /= %= | Užduotis Papildymo užduotis Atimties užduotis Daugybos užduotis Padalinio pavedimas Modulio užduotis | Iš dešinės į kairę |
2) | ? : | Trečias sąlyginis | Iš dešinės į kairę |
3) | || | Logiška ARBA | Iš kairės į dešinę |
4) | && | Logiška IR | Iš kairės į dešinę |
5) | | | Bitai imtinai ARBA | Iš kairės į dešinę |
6) | ^ | Bitiškai išskirtinis ARBA | Iš kairės į dešinę |
7) | & | Bitiškai IR | Iš kairės į dešinę |
8) | != == | Santykinis nelygu Santykinis yra lygus | Iš kairės į dešinę |
9) | < <= > >= pavyzdys=> | Santykinis mažesnis nei Santykinis mažesnis arba lygus Santykinis didesnis nei Santykinis didesnis arba lygus Tipų palyginimas (tik objektai) | Iš kairės į dešinę |
10) | >> << >>> | Bitų poslinkis į dešinę su ženklo plėtiniu Bitų poslinkis į kairę Bitų poslinkis į dešinę su nuliniu išplėtimu | Iš kairės į dešinę |
vienuolika) | - + | Atimtis Papildymas | Iš kairės į dešinę |
12) | * / % | Daugyba Padalinys Modulis | Iš kairės į dešinę |
13) | - + ~ ! (tipas) | Vienetinis minusas Vienetinis pliusas Vienareikšmis bitų papildymas Uniras loginis neigimas Unary typecast | Iš dešinės į kairę |
14) | ++ -- | Uniras postprieaugis Unary post-decrement | Iš dešinės į kairę |
penkiolika) | · () [] | Taško operatorius Skliausteliuose Masyvo indeksas | Iš kairės į dešinę |
Pirmumo tvarka
Kai du operatoriai dalijasi vienu operandu, aukščiausią pirmenybę turintis operatorius eina pirmas. Pavyzdžiui, x + y * z traktuojamas kaip x + (y * z), o x * y + z traktuojamas kaip (x * y) + z, nes * operatorius turi didžiausią pirmenybę, palyginti su + operatoriumi.
java null tikrinimas
Asociatyvumas
Asociatyvus yra sąvoka, susijusi su operatoriais, taikomais, kai išraiškoje yra du operatoriai, turintys tą pačią pirmenybę. Asociatyvumo samprata labai padeda išeiti iš šios situacijos. Tarkime, kad turime išraišką a + b - c (+ ir – operatoriai turi tą patį prioritetą) , ir ši išraiška bus traktuojama kaip (a + (b - c)) nes šie operatoriai yra asociatyvūs iš dešinės į kairę. Kita vertus, a+++--b+c++ bus traktuojamas kaip ((a++)+((--b)+(c++))) nes unariniai post-increment ir dekremento operatoriai yra iš dešinės į kairę-asociatyvūs.
Toliau pateikiamas pavyzdys, kaip suprasti, kaip išraiška vertinama naudojant pirmumo tvarką ir asociatyvumą?
Išraiška: x = 4 / 2 + 8 * 4 - ( 5 + 2 ) % 3
Sprendimas:
1) Aukščiau pateiktoje išraiškoje didžiausias pirmenybės operatorius yra () . Taigi, skliaustas eina pirmas ir pirmiausia apskaičiuojamas.
x = 4 / 2 + 8 * 4 - 7 % 3
2) dabar, /, * ir % operatoriai turi tą patį pirmumą ir aukščiausią nuo + ir - Čia mes naudojame asociatyvumo koncepciją joms išspręsti. Šių operatorių asociacijos yra iš kairės į dešinę. Taigi, / operatorius eina pirmas ir tada * ir % tuo pačiu metu.
x = 2 + 8 * 4 - 7 % 3
x = 2 + 32 – 7 % 3
apvali matematika java
x = 2 + 32 - 1
3) dabar, + ir - operatoriai taip pat turi tą pačią pirmenybę ir šių operatorių asociatyvumą, kad būtų išvengta dešinės. Taigi, + operatorius eis pirmas, o tada - eisiu.
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); } }
Išvestis
mergesort java