Java Operator Precedence

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å.

Intressanta artiklar...