Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用OR运算符时是否同时运行两个参数?_Java_If Statement_Operators - Fatal编程技术网

Java 使用OR运算符时是否同时运行两个参数?

Java 使用OR运算符时是否同时运行两个参数?,java,if-statement,operators,Java,If Statement,Operators,可能重复: 当foo为true时,它是否会进入栏?否,|使用所谓的最小求值,或者称为最小求值,一旦找到求值为true(从左到右)的表达式,它就会停止求值条件 从: 15.24。条件或运算符|| 条件or运算符| |运算符类似于|(§15.22.2),但是 仅当其左操作数的值 操作数为false 和&的操作方式类似: 15.23。条件与运算符&& 条件and运算符&&与&(§15.22.2)类似,但计算 仅当其左侧操作数的值为 对 |和&&都是短路逻辑运算符 当两个表达式由OR(|)连接时,如果

可能重复:


foo为true时,它是否会进入

否,
|
使用所谓的最小求值,或者称为最小求值,一旦找到求值为
true
(从左到右)的表达式,它就会停止求值条件

从:

15.24。条件或运算符||

条件or运算符| |运算符类似于|(§15.22.2),但是 仅当其左操作数的值 操作数为false

和&
的操作方式类似:

15.23。条件与运算符&&

条件and运算符&&与&(§15.22.2)类似,但计算 仅当其左侧操作数的值为 对


|
&&
都是短路逻辑运算符

当两个表达式由OR(
|
)连接时,如果第一个表达式为真,则答案将始终为真

| |真假
千真万确
假真假

&&
|
在知道计算结果后立即停止计算。例如:

if (a == null || a.get() == null)
工作得很好,因为如果a为null,则第二部分不会被计算,并且不会出现NullPointerException

如果希望计算这两个表达式,可以使用无条件的
&
|

if (a == null | a.get() == null)
将评估这两个条件,无论第一个条件是否正确


给出您可能希望发生这种情况的示例。

如果
foo
为true,则将忽略
bar
。这是短路评估。像这样的问题没有什么意义。为什么不呢?@Karolis:因为尝试将向您显示当前运行的Java虚拟机的行为,而不一定是指定的行为。@jarnbjo但如果JVM的行为与Java语言规范中指定的行为不同,您将有一个坏JVM。特别是如果像这样基本的东西不起作用,它就会真的,真的坏了。@Jesper:问题是?如果指定了某些行为,那么它当然会在任何VM中工作,如果VM没有损坏的话。但是,如果您在一个VM上观察到一个行为,您就不能以另一种方式得出结论,并假定要指定的行为在所有其他VM上都是相同的。
if (a == null | a.get() == null)