以下java代码是否有保证的执行顺序:
int i = getA() + getB();
Is getA()
总是在之前执行getB()
,正如任何普通人所期望的那样?
是的。来自 JLS,第 15.7 节:
Java 编程语言保证运算符的操作数似乎按特定的求值顺序(即从左到右)求值。
建议代码不要严重依赖此规范。当每个表达式最多包含一个副作用(作为其最外层操作)时,并且当代码不完全依赖于表达式从左到右求值所导致的异常时,代码通常会更清晰。
...
二元运算符的左侧操作数似乎在右侧操作数的任何部分被求值之前被完全求值。
并且:
Java 编程语言还保证运算符的每个操作数(条件运算符 &&、|| 和 ?: 除外)在执行操作本身的任何部分之前似乎都经过完全评估。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)