Prednost operatora određuje redoslijed ocjenjivanja operatora u izrazu.
Prije nego što započnete čitati ovaj članak, trebali biste imati osnovno znanje o Java operaterima.
Sada pogledajte izjavu u nastavku:
int myInt = 12 - 4 * 2;
Koja će biti vrijednost myInt? Hoće li to biti (12 - 4)*2
, odnosno 16
? Ili će biti 12 - (4 * 2)
, to jest 4
,?
Kada dva operatora dijele zajednički operand, 4
u ovom slučaju operira se operater s najvećim prioritetom.
U Javi je prioritet od *
veći od -
. Dakle, množenje se izvodi prije oduzimanja, a vrijednost myInt bit će 4.
Tablica prednosti operatora
Tablica u nastavku navodi prednost operatora u Javi; što se više pojavljuje u tablici, to je veća njegova prednost.
Prednost Java operatoraOperateri | Prednost |
---|---|
postfix povećanje i smanjenje | ++ -- |
priraštaj i dekrement prefiksa i unarni | ++ -- + - ~ ! |
multiplikativni | * / % |
aditiv | + - |
smjena | << >> >>> |
relacijski | < > <= >= instanceof |
jednakost | == != |
bitovno I | & |
bitno isključiva ILI | ^ |
bitovno uključivo ILI | | |
logično I | && |
logično ILI | || |
trostruko | ? : |
zadatak | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Primjer: Prednost operatora
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Izlaz :
2
Prednost operatora prefiksa ++
veća je od prednosti -
operatora oduzimanja. Stoga,
rezultat = a - ++ c - ++ b;
je ekvivalentan
rezultat = a - (++ c) - (++ b);
Kada se radi s više operatora i operanda u jednom izrazu, za preglednost možete koristiti zagrade kao u gornjem primjeru. Prvo se vrednuje izraz unutar zagrada.
Asocijativnost operatora u Javi
Ako izraz ima dva operatora sa sličnim prioritetom, izraz se procjenjuje prema njegovoj asocijativnosti (bilo slijeva udesno ili zdesna ulijevo). Uzmimo primjer.
a = b = c;
Ovdje je vrijednost c dodijeljena varijabli b. Tada se varijabli a dodjeljuje vrijednost b. Zašto? To je zato što je asocijativnost = operatora zdesna nalijevo.
Tablica u nastavku prikazuje asocijativnost Java operatora zajedno s njihovom asocijativnošću.
Prednost i udruživanje Java operatoraOperateri | Prednost | Asocijativnost |
---|---|---|
postfix povećanje i smanjenje | ++ -- | s lijeva nadesno |
priraštaj i dekrement prefiksa i unarni | ++ -- + - ~ ! | s desna na lijevo |
multiplikativni | * / % | s lijeva nadesno |
aditiv | + - | s lijeva nadesno |
smjena | << >> >>> | s lijeva nadesno |
relacijski | < > <= >= instanceof | s lijeva nadesno |
jednakost | == != | s lijeva nadesno |
bitovno I | & | s lijeva nadesno |
bitno isključiva ILI | ^ | s lijeva nadesno |
bitovno uključivo ILI | | | s lijeva nadesno |
logično I | && | s lijeva nadesno |
logično ILI | || | s lijeva nadesno |
trostruko | ? : | s desna na lijevo |
zadatak | = += -= *= /= %= &= ^= |= <<= >>= >>>= | s desna na lijevo |
Ovdje ne trebate sve pamtiti. Većinu vremena prednost i asocijativnost operatora sama po sebi imaju smisla. Uvijek se možete vratiti ovom članku radi reference kad ste u nedoumici. Također, možete koristiti zagrade ako mislite da vaš kod čini lakšim za razumijevanje.