I have already introduced the idea of a pecking order for operators that determines the sequence in which they are executed in a statement. A simple arithmetic expression such as 3 + 4*5 results in the value 23 because the multiply operation is executed first—it takes precedence over the addition operation. I can now formalize the position by classifying all the operators present in Java according to their precedence. Each operator in Java has a set priority or precedence in relation to the others, as shown in the following table. Operators with a higher precedence are executed before those of a lower precedence. Precedence is highest for operators in the top line in the table, down through to the operators in the bottom line, which have the lowest precedence. Operators that appear on the same line of the table have the same precedence:
|Operator Precedence Group||Associativity|
|(), , postfix ++, postfix −−||left|
|unary +, unary −, prefix ++, prefix −−, ~, !||right|
|*, /, %||left|
|<<, >>, >>>||left|
|< ,<= , >, >=, instanceof||left|
|=, +=, −=, *=, /=, %=, <<=, >>=, >>>=, &=, |=, ^=||right|
Most of the operators that appear in the table you have not seen yet, but you will meet them all in this book eventually, and it is handy to have them all gathered together in a single precedence table that you can refer to when necessary.
By definition, the postfix ++ operator changes the value of its operand after the other operators ...