误解 Java 运算符优先级是常见问题和细微错误的根源。我很好奇地了解到,即使是Java语言规范也说,“建议代码不要严重依赖这个规范。JLS §15.7更喜欢清晰而不是聪明,在这方面有什么有用的指导方针吗?
如前所述,这个问题应该在评估令的背景下进行研究,详见此处。以下是有关该主题的一些资源:
欢迎补充或更正。
就“现实世界”而言,可以说:
因此,除了 vs 的特定情况之外,我真的只是使用括号来显式定义预期的优先级。*/+-
*/
+-
Bug 的另一个相关来源是舍入错误是如何累积的。这不是运算符优先顺序问题本身,而是在以算术等效的方式重新排列操作数后获得不同结果时感到惊讶的来源。这是David Goldberg的《每个计算机科学家都应该知道的关于浮点算术的知识》的 sun.com 版本。