Java 运算符优先级准则

2022-09-02 03:33:52

误解 Java 运算符优先级是常见问题和细微错误的根源。我很好奇地了解到,即使是Java语言规范也说,“建议代码不要严重依赖这个规范。JLS §15.7更喜欢清晰而不是聪明,在这方面有什么有用的指导方针吗?

如前所述,这个问题应该在评估令的背景下进行研究,详见此处。以下是有关该主题的一些资源:

欢迎补充或更正。


答案 1

就“现实世界”而言,可以说:

  • 足够多的程序员知道乘法/除法优先于加法/减法,就像数学上的惯例一样
  • 几乎没有任何程序员能记住任何其他优先规则

因此,除了 vs 的特定情况之外,我真的只是使用括号来显式定义预期的优先级。*/+-


答案 2

Bug 的另一个相关来源是舍入错误是如何累积的。这不是运算符优先顺序问题本身,而是在以算术等效的方式重新排列操作数后获得不同结果时感到惊讶的来源。这是David Goldberg的《每个计算机科学家都应该知道的关于浮点算术的知识》的 sun.com 版本。