Operatørens forrang bestemmer rekkefølgen operatørene i et uttrykk vurderes i.
Før du begynner å lese denne artikkelen, bør du ha grunnleggende kunnskaper om Java-operatører.
Ta en titt på uttalelsen nedenfor:
int myInt = 12 - 4 * 2;
Hva vil verdien av myInt være? Vil det være (12 - 4)*2
, altså 16
? Eller det blir det 12 - (4 * 2)
altså 4
?
Når to operatører deler en felles operand, 4
opereres i dette tilfellet operatøren med høyest prioritet først.
I Java er forrang av *
høyere enn for -
. Derfor blir multiplikasjonen utført før subtraksjon, og verdien av myInt vil være 4.
Operatørens prioritetstabell
Tabellen nedenfor viser prioriteten til operatører i Java; jo høyere det vises i tabellen, jo høyere er dens forrang.
Java Operator PrecedenceOperatører | Presedens |
---|---|
økning og reduksjon av postfix | ++ -- |
prefiks inkrement og decrement, og unary | ++ -- + - ~ ! |
multiplikativ | * / % |
tilsetningsstoff | + - |
skifte | << >> >>> |
relasjonell | < > <= >= instanceof |
likestilling | == != |
bitvis OG | & |
bitvis eksklusiv ELLER | ^ |
bitvis inkluderende ELLER | | |
logisk OG | && |
logisk ELLER | || |
ternær | ? : |
oppdrag | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Eksempel: Operatørens prioritet
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Utgang :
2
Operatørens forrang for prefikset ++
er høyere enn for -
subtraksjonsoperatøren. Derfor,
resultat = a - ++ c - ++ b;
tilsvarer
resultat = a - (++ c) - (++ b);
Når du arbeider med flere operatører og operander i et enkelt uttrykk, kan du bruke parenteser som i eksemplet ovenfor for klarhet. Uttrykket innenfor parentesene evalueres først.
Associativity of Operators in Java
Hvis et uttrykk har to operatorer med samme forrang, blir uttrykket evaluert i henhold til dets associativitet (enten fra venstre mot høyre eller fra høyre mot venstre). La oss ta et eksempel.
a = b = c;
Her tildeles verdien av c variabelen b. Da tildeles verdien av b til variabelen a. Hvorfor? Det er fordi assosiativiteten til = operator er fra høyre til venstre.
Tabellen nedenfor viser assosiativiteten til Java-operatører sammen med deres assosiativitet.
Java Operator Precedence and AssociativityOperatører | Presedens | Assosiativitet |
---|---|---|
økning og reduksjon av postfix | ++ -- | venstre til høyre |
prefiks inkrement og decrement, og unary | ++ -- + - ~ ! | høyre til venstre |
multiplikativ | * / % | venstre til høyre |
tilsetningsstoff | + - | venstre til høyre |
skifte | << >> >>> | venstre til høyre |
relasjonell | < > <= >= instanceof | venstre til høyre |
likestilling | == != | venstre til høyre |
bitvis OG | & | venstre til høyre |
bitvis eksklusiv ELLER | ^ | venstre til høyre |
bitvis inkluderende ELLER | | | venstre til høyre |
logisk OG | && | venstre til høyre |
logisk ELLER | || | venstre til høyre |
ternær | ? : | høyre til venstre |
oppdrag | = += -= *= /= %= &= ^= |= <<= >>= >>>= | høyre til venstre |
Du trenger ikke å huske alt her. Mesteparten av tiden gir forrang og tilknytning til operatører mening i seg selv. Du kan alltid komme tilbake til denne artikkelen for referanse når du er i tvil. Du kan også bruke parentes hvis du tror det gjør koden lettere å forstå.