Java operator precedence guidelines
java, operator-precedence, operators
Solution
As far as the "Real World" is concerned, it's probably fair to say:
- enough programmers know that multiplication/division take precedence over addition/subtraction, as is mathematically the convention
- hardly any programmers can remember any of the other rules of precedence
So, apart from the specific case of `*/` vs `+-`, I'd really just use brackets to explicitly define the precedence intended.
Problem
Misunderstanding Java operator precedence is a source of frequently asked questions and subtle errors. I was intrigued to learn that even the Java Language Specification says, "It is recommended that code not rely crucially on this specification." JLS §15.7 Preferring clear to clever, are there any useful guidelines in this area? As noted here, this problem should be studied in the context of Evaluation Order, detailed here. Here are a number of resources on the topic: - JLS Operators - JLS Precedence - JLS Evaluation Order - What are the rules for evaluation order in Java? - Java Glossary - Princeton - Oracle Tutorial - Conversions and Promotions - Usenet discussion Additions or corrections welcome.