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, 4u 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 operatora| Operateri | 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 operatora| Operateri | 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.








