Prioriteit van Java-operators

Operatorprioriteit bepaalt de volgorde waarin de operatoren in een uitdrukking worden geëvalueerd.

Voordat u dit artikel gaat lezen, moet u een basiskennis hebben van Java-operators.

Bekijk nu de onderstaande verklaring:

 int myInt = 12 - 4 * 2;

Wat wordt de waarde van myInt? Zal het zijn (12 - 4)*2, dat wil zeggen 16? Of het zal zijn 12 - (4 * 2), dat wil zeggen 4?

Wanneer twee operators een gemeenschappelijke operand delen, wordt 4in dit geval de operator met de hoogste prioriteit als eerste bediend.

In Java is de prioriteit van *hoger dan die van -. Daarom wordt de vermenigvuldiging uitgevoerd vóór het aftrekken en is de waarde van myInt 4.

Operatorprioriteitstabel

De onderstaande tabel geeft de prioriteit weer van operators in Java; hoe hoger het in de tabel staat, hoe hoger de prioriteit.

Prioriteit van Java-operators
Operatoren Voorrang
postfix verhogen en verlagen ++ --
prefix verhogen en verlagen, en unair ++ -- + - ~ !
multiplicatief * / %
additief + -
verschuiving << >> >>>
relationeel < > <= >= instanceof
gelijkheid == !=
bitsgewijs EN &
bitsgewijs exclusief OF ^
bitsgewijs inclusief OF |
logisch EN &&
logische OR ||
ternair ? :
opdracht = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Voorbeeld: Operatorprioriteit

 class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )

Uitgang :

 2

De operatorprioriteit van prefix ++is hoger dan die van -aftrekkingsoperator. Vandaar,

 resultaat = a - ++ c - ++ b;

is gelijk aan

 resultaat = a - (++ c) - (++ b);

Als u met meerdere operatoren en operanden in een enkele uitdrukking te maken heeft, kunt u voor de duidelijkheid haakjes gebruiken zoals in het bovenstaande voorbeeld. De uitdrukking tussen haakjes wordt eerst geëvalueerd.

Associativiteit van operators in Java

Als een uitdrukking twee operatoren heeft met dezelfde prioriteit, wordt de uitdrukking geëvalueerd op basis van zijn associativiteit (van links naar rechts of van rechts naar links). Laten we een voorbeeld nemen.

 a = b = c;

Hier wordt de waarde van c toegewezen aan variabele b. Dan wordt de waarde van b toegekend aan variabele a. Waarom? Het is omdat de associativiteit van = operator van rechts naar links is.

De onderstaande tabel toont de associativiteit van Java-operators samen met hun associativiteit.

Prioriteit en associativiteit van Java-operators
Operatoren Voorrang Associativiteit
postfix verhogen en verlagen ++ -- van links naar rechts
prefix verhogen en verlagen, en unair ++ -- + - ~ ! rechts naar links
multiplicatief * / % van links naar rechts
additief + - van links naar rechts
verschuiving << >> >>> van links naar rechts
relationeel < > <= >= instanceof van links naar rechts
gelijkheid == != van links naar rechts
bitsgewijs EN & van links naar rechts
bitsgewijs exclusief OF ^ van links naar rechts
bitsgewijs inclusief OF | van links naar rechts
logisch EN && van links naar rechts
logische OR || van links naar rechts
ternair ? : rechts naar links
opdracht = += -= *= /= %=
&= ^= |= <<= >>= >>>=
rechts naar links

U hoeft hier niet alles te onthouden. Meestal zijn de voorrang en associativiteit van operators op zichzelf logisch. U kunt bij twijfel altijd terugkomen op dit artikel ter referentie. U kunt ook haakjes gebruiken als u denkt dat uw code hierdoor gemakkelijker te begrijpen is.

Interessante artikelen...