Kev*_*ave 14 java compiler-construction evaluation jvm if-statement
可以说我有以下条件:
if ( myList == null || myList.isEmpty() || xomeX == someY )
Run Code Online (Sandbox Code Playgroud)
评估这些条件的顺序是什么?左右,右到左或每次随机?
如果第一个通过,那么其他人会被忽略?
NIN*_*OOP 21
除了赋值运算符之外,它应始终从左到右=
.您正在使用短路OR
操作器,因此如果第一个条件是true
,则不会评估其余部分.
条件或运算符在语法上是左关联的(它从左到右分组).
在运行时,首先计算左侧操作数表达式; 如果结果具有布尔类型,则进行拆箱转换(第5.1.8节).
如果结果值为true,则条件或表达式的值为true,并且不评估右侧操作数表达式.
if ( myList == null || myList.isEmpty() || xomeX == someY )
Run Code Online (Sandbox Code Playgroud)
是的,评估是从左到右!
和
如果第一个条件为真,则不评估下一个条件.这个概念称为短路评估.你可以在这里阅读更多相关内容.之前发布的类似SO问题是Java逻辑运算符短路
归档时间: |
|
查看次数: |
19129 次 |
最近记录: |