Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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
关于Java8(OCA)中的短运算符和修复后增量的问题_Java_Logical Operators_Short Circuiting - Fatal编程技术网

关于Java8(OCA)中的短运算符和修复后增量的问题

关于Java8(OCA)中的短运算符和修复后增量的问题,java,logical-operators,short-circuiting,Java,Logical Operators,Short Circuiting,我正在学习我的OCA认证,发现了这段代码,我想知道为什么下面代码的结果是“1,2”而不是“1,3” 这里使用的“&”运算符不是短的,后缀增量应用于第一个int,那么为什么不应用于第二个int呢 inti=0; int j=1; 如果((i++==0)和(j++==2)){ i=12; } 系统输出打印项次(i+“”+j); 在学习中,休息是很重要的。我理解所涉及的概念,但让我犯一个逻辑错误,这使我假设j开始时是2为什么j在块j++==2中只增加一次,而3。最初将j初始化为1,然后应用++运算符

我正在学习我的OCA认证,发现了这段代码,我想知道为什么下面代码的结果是“1,2”而不是“1,3”

这里使用的“&”运算符不是短的,后缀增量应用于第一个int,那么为什么不应用于第二个int呢

inti=0;
int j=1;
如果((i++==0)和(j++==2)){
i=12;
}
系统输出打印项次(i+“”+j);

在学习中,休息是很重要的。我理解所涉及的概念,但让我犯一个逻辑错误,这使我假设j开始时是2

为什么
j
j++==2
中只增加一次,而
3
。最初将
j
初始化为
1
,然后应用
++
运算符,该运算符将其递增为
2

++
运算符实际上是在执行
j=j+1
,并且由于您使用了逻辑and运算符
&
,因此对第一个条件和第二个条件都进行了计算

注意:如果第一个条件的计算结果仍然为false,则第二个条件的计算结果应为
&
是逻辑AND运算符,而不是短路的条件
&
运算符


注释中提到的@Marvin所述的逻辑运算符,j++=j+1=1+1=2


在学习OCA认证时,有规律地休息是很重要的:)

j++=j+1=1+1=2
。为什么
j
应该是3呢?因为我已经学习太久了,而且我的大脑似乎已经耗尽了。。但是谢谢你的帮助。如果你用
&&
而不是
&
,情况也会完全一样。我会接受你的答案,因为你费了好大劲才把它写出来。谢谢这里使用的概念对我来说很清楚,但我今天可能已经讨论了太久了。@matthewkeissard您可以检查一下我在回答中发布的java规范中按位逻辑运算符的行为。它不是按位and运算符。这是逻辑and运算符。@ANDY当操作数为数字时,按位翻转我的错误,当操作数为布尔值时,按逻辑翻转我的错误,对吗?@Amardepbhowmick您大致正确。您在答案中链接的语言规范部分更精确地描述了它。