Kun puhumme ensisijaisuudesta Javassa, operaattori tulee ensin mieleen. Javassa on tiettyjä sääntöjä, jotka määrittävät lausekkeen operaattoreiden arviointijärjestyksen. Operaattorin etusija on käsite, jolla määritellään lausekkeen termiryhmä. Operaattorin ensisijaisuus vastaa lausekkeiden arvioinnista. Sisään Java , sulut () ja Taulukon alaindeksi[] ovat Javassa korkein etusija. Esimerkiksi yhteen- ja vähennyslaskulla on korkeampi prioriteetti kuin vasen- ja oikea-siirtooperaattoreilla.
Alla on määritetty taulukko, jossa alimman tärkeysjärjestyksen operaattori näkyy sen yläosassa.
Ensisijaisuus | Operaattori | Tyyppi | Assosiatiivisuus |
---|---|---|---|
1) | = += -= *= /= %= | Tehtävä Lisäystehtävä Vähennystehtävä Kertolaskutehtävä Jaostotehtävä Moduulitehtävä | Oikealta vasemmalle |
2) | ? : | Kolminkertainen ehdollinen | Oikealta vasemmalle |
3) | || | Looginen TAI | Vasemmalta oikealle |
4) | && | Looginen JA | Vasemmalta oikealle |
5) | | | Bittikohtainen TAI | Vasemmalta oikealle |
6) | ^ | Bittikohtaisesti yksinomainen TAI | Vasemmalta oikealle |
7) | & | Bitittain JA | Vasemmalta oikealle |
8) | != == | Relaatio ei ole sama kuin Relaatio on yhtä suuri kuin | Vasemmalta oikealle |
9) | < <= > >= esiintymä=> | Suhteellinen vähemmän kuin Relaatio pienempi tai yhtä suuri Suhteellinen suurempi kuin Relaatio on suurempi tai yhtä suuri Tyyppivertailu (vain objektit) | Vasemmalta oikealle |
10) | >> << >>> | Bittisuuntainen siirto oikealle kylttilaajennuksella Bittisuuntainen siirto vasemmalle Bitittainen siirto oikealle nollalaajennuksella | Vasemmalta oikealle |
yksitoista) | - + | Vähennyslasku Lisäys | Vasemmalta oikealle |
12) | * / % | Kertominen Division Modulus | Vasemmalta oikealle |
13) | - + ~ ! (tyyppi) | Yksinäinen miinus Yksinäinen plussa Unaarinen bittikomplementti Yksinäinen looginen negaatio Unary typecast | Oikealta vasemmalle |
14) | ++ -- | Unaarinen jälkilisäys Unaarinen dekrementti | Oikealta vasemmalle |
viisitoista) | · () [] | Pisteoperaattori Sulut Array alaindeksi | Vasemmalta oikealle |
Tärkeysjärjestys
Kun kaksi operaattoria jakaa yhden operandin, ensimmäisenä on operaattori, jolla on korkein etusija. Esimerkiksi x + y * z käsitellään muodossa x + (y * z), kun taas x * y + z käsitellään muodossa (x * y) + z, koska *-operaattorilla on korkein etusija +-operaattoriin verrattuna.
merkkijono jsonobject
Assosiatiivisuus
Assosiatiivisuus on käsite, joka liittyy operaattoreihin, joita käytetään, kun lausekkeessa on kaksi operaattoria, joilla on sama etusija. Assosiatiivisuuskonsepti on erittäin hyödyllinen siitä tilanteesta lähtemiseen. Oletetaan, että meillä on lauseke a + b - c (+ ja - operaattoreilla on sama prioriteetti) , ja tätä lauseketta käsitellään nimellä (a + (b - c)) koska nämä operaattorit ovat oikealta vasemmalle assosiatiivisia. Toisaalta a+++--b+c++ käsitellään nimellä ((a++)+((--b)+(c++))) koska unaariset postinkrementti- ja dekrementtioperaattorit ovat oikealta vasemmalle assosiatiivisia.
Alla on esimerkki, jonka avulla ymmärrät, kuinka lauseke arvioidaan tärkeysjärjestyksen ja assosiatiivisuuden avulla?
Lauseke: x = 4 / 2 + 8 * 4 - ( 5 + 2 ) % 3
Ratkaisu:
1) Yllä olevassa lausekkeessa korkein prioriteettioperaattori on () . Suluissa menee siis ensin ja laskee ensin.
x = 4 / 2 + 8 * 4 - 7 % 3
2) nyt, /, * ja % operaattoreilla on sama etusija ja korkein + ja - Tässä käytämme assosiatiivisuuskonseptia niiden ratkaisemiseen. Näiden operaattoreiden assosiatiivit ovat vasemmalta oikealle. Niin, / operaattori menee ensin ja sitten * ja % samanaikaisesti.
javan nimeämiskäytännöt
x = 2 + 8 * 4 - 7 % 3
x = 2 + 32 - 7 % 3
x = 2 + 32 - 1
3) nyt, + ja - operaattoreilla molemmilla on myös sama etusija, ja näiden operaattoreiden assosiatiivisuus ei oikealle. Niin, + operaattori menee ensin ja sitten - tulee menemään.
x = 34 - 1
x = 33
r c-kielellä
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); } }
Lähtö