我讀過一些教程,並回答關於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);
}
}
'|'和'&'是按位或/和運算符;它們不同於'||'和'&&',它們是邏輯或/和運算符。 – NullUserException
我知道我沒有得到第四名,但是......我迷失在那裏:-) –
@NullUserException:他們在短路方面有所不同 - 但JLS在另一方面定義了一個。 ..看到我的答案。 (注意對於'boolean'操作數,它們仍然是邏輯運算符...) –