我读过一些教程,并回答关于java和我短路操作我仍然不完全理解java处理双垂直管道短路的方式与双和号的区别。例如...
为什么逻辑与短路评估失败?
引用JSL 15.23。有条件与操作员& &
The conditional-and operator && is like & (§15.22.2), but evaluates its right-hand operand only if the value of its left-hand operand is true.
public static void main(String... args) {
int a = 1;
int b = 2;
// Okay. Prints
if(a == 1 | b == 3) {
System.out.println("Comparison via |" + "\na is " + a + "\nb is " + b);
}
// Okay. Prints
if(a == 1 || b == 3) {
System.out.println("Comparison via ||" + "\na is " + a + "\nb is " + b);
}
// Okay. Does not print
if(a == 1 & b == 3) {
System.out.println("Comparison via &" + "\na is " + a + "\nb is " + b);
}
// I don't understand. Shouldn't the Short Circuit succeed since the left side of the equation equals 1?
if(a == 1 && b == 3) {
System.out.println("Comparison via &&" + "\na is " + a + "\nb is " + b);
}
}
2012-11-16
Eddie B
+3
'|'和'&'是按位或/和运算符;它们不同于'||'和'&&',它们是逻辑或/和运算符。 –
+0
我知道我没有得到第四名,但是......我迷失在那里:-) –
+0
@NullUserException:他们在短路方面有所不同 - 但JLS在另一方面定义了一个。 ..看到我的答案。 (注意对于'boolean'操作数,它们仍然是逻辑运算符...) –