Operatørens forrang bestemmer rækkefølgen, i hvilken operatørerne i et udtryk vurderes.
Før du begynder at læse denne artikel, skal du have en grundlæggende viden om Java-operatører.
Se nu på udsagnet nedenfor:
int myInt = 12 - 4 * 2;
Hvad vil værdien af myInt være? Vil det være (12 - 4)*2, altså 16? Eller det vil være 12 - (4 * 2), det vil sige 4?
Når to operatører deler en fælles operand, 4i dette tilfælde betjenes operatøren med den højeste prioritet først.
I Java er forrang for *højere end for -. Derfor udføres multiplikationen før subtraktion, og værdien af myInt vil være 4.
Operatørens prioritetstabel
Tabellen nedenfor viser forrang for operatører i Java; jo højere den vises i tabellen, jo højere er dens forrang.
Java-operatørpræference| Operatører | Forrang |
|---|---|
| stigning og reduktion af postfix | ++ -- |
| præfiks stigning og nedgang, og unary | ++ -- + - ~ ! |
| multiplikativ | * / % |
| tilsætningsstof | + - |
| flytte | << >> >>> |
| relationel | < > <= >= instanceof |
| lighed | == != |
| bitvis OG | & |
| bitvis eksklusiv ELLER | ^ |
| bitvis inklusive ELLER | | |
| logisk OG | && |
| logisk ELLER | || |
| ternær | ? : |
| opgave | = += -= *= /= %=&= ^= |= <<= >>= >>>= |
Eksempel: Operatørpræference
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Output :
2
Operatorens forrang for præfikset ++er højere end for -subtraktionsoperatøren. Derfor
resultat = a - ++ c - ++ b;
svarer til
resultat = a - (++ c) - (++ b);
Når du beskæftiger dig med flere operatorer og operander i et enkelt udtryk, kan du bruge parenteser som i ovenstående eksempel for at få klarhed. Udtrykket inden for parenteserne evalueres først.
Associativitet af operatører i Java
Hvis et udtryk har to operatorer med samme forrang, evalueres udtrykket i henhold til dets associativitet (enten fra venstre mod højre eller fra højre mod venstre). Lad os tage et eksempel.
a = b = c;
Her tildeles værdien af c variabel b. Derefter tildeles værdien af b til variabel a. Hvorfor? Det er fordi associativiteten af = operator er fra højre mod venstre.
Nedenstående tabel viser Java-operatørernes associativitet sammen med deres associativitet.
Java Operator Precedence and Associativity| Operatører | Forrang | Associativitet |
|---|---|---|
| stigning og reduktion af postfix | ++ -- | venstre til højre |
| præfiks stigning og nedgang, og unary | ++ -- + - ~ ! | højre mod venstre |
| multiplikativ | * / % | venstre til højre |
| tilsætningsstof | + - | venstre til højre |
| flytte | << >> >>> | venstre til højre |
| relationel | < > <= >= instanceof | venstre til højre |
| lighed | == != | venstre til højre |
| bitvis OG | & | venstre til højre |
| bitvis eksklusiv ELLER | ^ | venstre til højre |
| bitvis inklusive ELLER | | | venstre til højre |
| logisk OG | && | venstre til højre |
| logisk ELLER | || | venstre til højre |
| ternær | ? : | højre mod venstre |
| opgave | = += -= *= /= %=&= ^= |= <<= >>= >>>= | højre mod venstre |
Du behøver ikke at huske alt her. For det meste giver operatørernes forrang og associativitet mening i sig selv. Du kan altid vende tilbage til denne artikel til reference, når du er i tvivl. Du kan også bruge parentes, hvis du synes, det gør din kode lettere at forstå.








