In Java, Operator Precedence is an evaluation order in which the operators within an expression are evaluated on the priority bases.
Operator Precedence
Operator Precedence :
In Java, Operator
Precedence is an evaluation order in which
the operators within an expression are evaluated on the priority bases. Operators with a higher precedence are applied before operators with
a lower precedence.
For instance, the expression "4 + 5 * 6 /
3" will be treated as "4 + (5 * (6 / 3))" and 14 is
obtained as a result.
When two operators share an operand then operator
with the higher precedence gets evaluated first.
However, if the operators have the equal precedence in the same expression
then that expression will be evaluated from left to right except the assignment
operators.
For example a = b = c = 15 is treated as
a = (b = (c = 15)).
The
table below shows the list of operators that follow the precedence.
Operators | Precedence |
array index & parentheses | [ ] ( ) |
access object | . |
postfix | expr++ expr-- |
unary | ++expr --expr +expr -expr ~ ! |
multiplicative | * / % |
additive | + - |
bit shift | << >> >>> |
relational | < > <= >= instanceof |
equality | == != |
bitwise AND | & |
bitwise exclusive OR | ^ |
bitwise inclusive OR | | |
logical AND | && |
logical OR | || |
ternary | ? : |
assignment | = += -= *= /= %= &= ^= |= <<= >>= >> >= |
Lets see an example that evaluates an arithmetic
expression according to the precedence order.
class PrecedenceDemo{
|
The expression "a+(++b)*((c/a)*b)
"
is evaluated from right to left. Its evaluation order depends upon the precedence order
of the operators. It is shown below:
(++b) |
a + (++b)*((c/a)*b) |
(c/a) |
a+
(++b)*((c/a)*b) |
(c/a)*b |
a + (++b)*((c/a)*
b) |
(++b)*((c/a)*b) |
a + (++b)*((c/a)*
b) |
a+(++b)*((c/a)*b) |
a+(++b)*((c/a)*b) |
Output of the Program:
C:\nisha>javac PrecedenceDemo.java C:\nisha>java PrecedenceDemo The result is: 42.0 |