Kada govorimo o prednosti u Javi, operator je prvi na umu. U Javi su definirana određena pravila za određivanje redoslijeda kojim se procjenjuju operatori u izrazu. Prioritet operatora je koncept određivanja grupe pojmova u izrazu. Prednost operatora je odgovorna za procjenu izraza. U Java , zagrade() i Niz indeks[] imaju najveću prednost u Javi. Na primjer, zbrajanje i oduzimanje imaju veću prednost od operatora lijevog pomaka i desnog pomaka.
Ispod je definirana tablica u kojoj se operator s najnižim prioritetom prikazuje na vrhu.
Prednost | Operater | Tip | Asocijativnost |
---|---|---|---|
1) | = += -= *= /= %= | Zadatak Zadatak sabiranja Zadatak oduzimanja Zadatak množenja Dodjela podjele Dodjela modula | S desna na lijevo |
2) | ? : | Trojni kondicional | S desna na lijevo |
3) | || | Logički ILI | S lijeva nadesno |
4) | && | Logično I | S lijeva nadesno |
5) | | | Uključivo ILI po bitovima | S lijeva nadesno |
6) | ^ | Bitno isključivi OR | S lijeva nadesno |
7) | i | Bitno I | S lijeva nadesno |
8) | != == | Relacijska nije jednaka Relacijska je jednaka | S lijeva nadesno |
9) | < <= > >= instanceof=> | Relacijski manje od Relacijska manja ili jednaka Relacijski veći od Relacijski veći ili jednak Usporedba tipa (samo objekti) | S lijeva nadesno |
10) | >> << >>> | Pomak udesno s predznakom Pomak ulijevo po bitovima Pomak udesno po bitovima s nultom ekstenzijom | S lijeva nadesno |
jedanaest) | - + | Oduzimanje Dodatak | S lijeva nadesno |
12) | * / % | Množenje Podjela Modul | S lijeva nadesno |
13) | - + ~ ! (tip) | Unarni minus Unarni plus Unarni bitni komplement Unarna logička negacija Unarni prikaz tipa | S desna na lijevo |
14) | ++ -- | Unarni postinkrement Unarni postdekrement | S desna na lijevo |
petnaest) | · () [] | Operator točka Zagrade Indeks niza | S lijeva nadesno |
Redoslijed prvenstva
Kada dva operatora dijele jedan operand, prvi ide operator s najvećim prvenstvom. Na primjer, x + y * z tretira se kao x + (y * z), dok se x * y + z tretira kao (x * y) + z jer operator * ima najveću prednost u usporedbi s operatorom +.
čitati iz csv java
Asocijativnost
Asocijativnost je koncept koji se odnosi na operatore koji se primjenjuju kada dva operatora s istim prvenstvom dolaze u izraz. Koncept asocijativnosti vrlo je koristan za izlazak iz te situacije. Pretpostavimo da imamo izraz a + b - c (operatori + i - imaju isti prioritet) , a ovaj izraz će se tretirati kao (a + (b - c)) jer su ti operatori zdesna nalijevo asocijativni. S druge strane, a+++--b+c++ će se tretirati kao ((a++)+((--b)+(c++))) jer su unarni operatori postinkrementiranja i dekrementiranja asocijativni desno prema lijevo.
Dolje je definiran primjer da biste razumjeli kako se izraz procjenjuje pomoću redoslijeda prvenstva i asocijativnosti?
Izraz: x = 4 / 2 + 8 * 4 - ( 5+ 2 ) % 3
Riješenje:
1) U gornjem izrazu, operator najvišeg prvenstva je () . Dakle, zagrada ide prva i prva izračunava.
virtualna memorija
x = 4 / 2 + 8 * 4 - 7 % 3
2) Sada, /, * i % operatori imaju isti prioritet i najviši od + i - Ovdje koristimo koncept asocijativnosti za njihovo rješavanje. Asocijativi ovih operatora su s lijeva na desno. Tako, / operator ide prvi, a zatim * i % istovremeno.
x = 2 + 8 * 4 - 7 % 3
x = 2 + 32 - 7 % 3
x = 2 + 32 - 1
3) Sada, + i - oba operatora također imaju isti prioritet, a asocijativnost ovih operatora udesno. Tako, + operater će ići prvi, a zatim - će ići.
oštar kut
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); } }
Izlaz