Operatörens företräde bestämmer i vilken ordning operatörerna i ett uttryck utvärderas.
Innan du börjar läsa den här artikeln bör du ha en grundläggande kunskap om Java-operatörer.
Ta en titt på uttalandet nedan:
int myInt = 12 - 4 * 2;
Vad blir värdet av myInt? Kommer det att vara (12 - 4)*2, det vill säga 16? Eller så blir det 12 - (4 * 2), det vill säga 4?
När två operatörer delar en gemensam operand, 4i detta fall, opereras operatören med högst företräde först.
I Java är företräde *högre än den för -. Därför utförs multiplikationen före subtraktion, och värdet på myInt blir 4.
Operatörens prioritetstabell
Tabellen nedan visar företräde för Java i Java; ju högre det visas i tabellen, desto högre är dess företräde.
Java Operator Precedence| Operatörer | Företräde |
|---|---|
| ökning och minskning av postfix | ++ -- |
| prefix steg och minskning, och unary | ++ -- + - ~ ! |
| multiplikativ | * / % |
| tillsats | + - |
| flytta | << >> >>> |
| relationellt | < > <= >= instanceof |
| jämlikhet | == != |
| bitvis OCH | & |
| bitvis exklusivt ELLER | ^ |
| bitvis inkluderande ELLER | | |
| logisk OCH | && |
| logisk ELLER | || |
| ternära | ? : |
| uppdrag | = += -= *= /= %=&= ^= |= <<= >>= >>>= |
Exempel: Operatörens företräde
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Utgång :
2
Operatörens företräde för prefixet ++är högre än för -subtraktionsoperatören. Därmed,
resultat = a - ++ c - ++ b;
är ekvivalent med
resultat = a - (++ c) - (++ b);
När du hanterar flera operatörer och operander i ett enda uttryck kan du använda parenteser som i exemplet ovan för tydlighetens skull. Uttrycket inom parentes utvärderas först.
Associativitet för operatörer i Java
Om ett uttryck har två operatorer med samma företräde utvärderas uttrycket utifrån dess associativitet (antingen från vänster till höger eller från höger till vänster). Låt oss ta ett exempel.
a = b = c;
Här tilldelas värdet på c variabel b. Då tilldelas värdet på b variabel a. Varför? Det beror på att associativiteten för = operator är från höger till vänster.
Tabellen nedan visar associativiteten hos Java-operatörer tillsammans med deras associativitet.
Java Operator Precedence and Associativity| Operatörer | Företräde | Associativitet |
|---|---|---|
| ökning och minskning av postfix | ++ -- | vänster till höger |
| prefix steg och minskning, och unary | ++ -- + - ~ ! | höger till vänster |
| multiplikativ | * / % | vänster till höger |
| tillsats | + - | vänster till höger |
| flytta | << >> >>> | vänster till höger |
| relationellt | < > <= >= instanceof | vänster till höger |
| jämlikhet | == != | vänster till höger |
| bitvis OCH | & | vänster till höger |
| bitvis exklusivt ELLER | ^ | vänster till höger |
| bitvis inkluderande ELLER | | | vänster till höger |
| logisk OCH | && | vänster till höger |
| logisk ELLER | || | vänster till höger |
| ternära | ? : | höger till vänster |
| uppdrag | = += -= *= /= %=&= ^= |= <<= >>= >>>= | höger till vänster |
Du behöver inte memorera allt här. För det mesta är operatörernas företräde och associativitet meningsfullt i sig. Du kan alltid komma tillbaka till den här artikeln för referens när du är osäker. Du kan också använda parentes om du tror att det gör din kod lättare att förstå.








