In dit gedeelte leren we de exploitant voorrang op Java samen met voorbeelden.
Wat is operatorprioriteit?
De prioriteit van de operator geeft weer hoe twee uitdrukkingen met elkaar verbonden zijn. In een expressie bepaalt het de groepering van operators met operanden en bepaalt het hoe een expressie zal evalueren.
hoe je een string naar een geheel getal converteert in Java
Bij het oplossen van een uitdrukking moeten twee dingen in gedachten worden gehouden: de eerste is a voorrang en de tweede is associativiteit .
Voorrang
Voorrang is de prioriteit voor het groeperen van verschillende typen operators met hun operanden. Het heeft alleen betekenis als een uitdrukking meer dan één operator met hogere of lagere prioriteit heeft. De operatoren met een hogere prioriteit worden eerst geëvalueerd. Als we eerst operatoren met lagere prioriteit willen evalueren, moeten we operanden groeperen door haakjes te gebruiken en vervolgens evalueren.
Associativiteit
We moeten associativiteit volgen als een uitdrukking meer dan twee operatoren met dezelfde prioriteit heeft. In zo'n geval kan een uitdrukking ook worden opgelost van links naar rechts of rechts naar links, overeenkomstig.
Prioriteitstabel voor Java-operators
De volgende tabel beschrijft de prioriteit en associativiteit van operators die in Java worden gebruikt.
Voorrang | Exploitant | Type | Associativiteit |
---|---|---|---|
vijftien | () [] · | Haakjes Array-subscript Selectie van leden | Van links naar rechts |
14 | ++ -- | Unaire post-increment Unaire post-verlaging | Rechts naar links |
13 | ++ -- + - ! ~ (type) | Unaire pre-verhoging Unaire pre-verlaging Unair plus Unair min Unaire logische ontkenning Unaire bitsgewijze aanvulling Unaire type cast | Rechts naar links |
12 | * / % | Vermenigvuldiging Divisie Module | Van links naar rechts |
elf | + - | Toevoeging Aftrekken | Van links naar rechts |
10 | << >> >>> | Bitsgewijs naar links verschuiven Bitsgewijs naar rechts verschuiven met tekenverlenging Bitsgewijze verschuiving naar rechts met nulextensie | Van links naar rechts |
9 | < <= > >= exemplaarvan=> | Relationeel minder dan Relationeel kleiner dan of gelijk Relationeel groter dan Relationeel groter dan of gelijk Typevergelijking (alleen objecten) | Van links naar rechts |
8 | == != | Relationeel is gelijk aan Relationeel is niet gelijk aan | Van links naar rechts |
7 | & | Bitsgewijs EN | Van links naar rechts |
6 | ^ | Bitwise exclusieve OR | Van links naar rechts |
5 | | | Bitgewijze inclusief OR | Van links naar rechts |
4 | && | Logisch EN | Van links naar rechts |
3 | || | Logische OF | Van links naar rechts |
2 | ? : | Ternair voorwaardelijk | Rechts naar links |
1 | = += -= *= /= %= | Opdracht Toevoeging opdracht Aftrekking opdracht Vermenigvuldiging opdracht Divisie opdracht Modulustoewijzing | Rechts naar links |
Opmerking: hoe groter het getal, hoe hoger de prioriteit.
Voorbeeld van prioriteit van Java-operator
Laten we de prioriteit van de operator begrijpen aan de hand van een voorbeeld. Beschouw de volgende uitdrukking en raad het antwoord.
1 + 5 * 3
Je zou denken dat het antwoord zou zijn 18 maar niet zo. Omdat de operator van vermenigvuldiging (*) een hogere prioriteit heeft dan de operator van optellen (+). Daarom evalueert de uitdrukking eerst 5*3 en evalueert vervolgens de resterende uitdrukking, d.w.z. 1+15. Daarom zal het antwoord zijn 16 .
Laten we nog een voorbeeld bekijken. Beschouw de volgende uitdrukking.
een string omzetten naar een geheel getal
x + y * z / k
In de bovenstaande expressie worden * en / bewerkingen vóór + uitgevoerd vanwege prioriteit. y wordt vermenigvuldigd met z voordat het wordt gedeeld door k vanwege associativiteit.