以下兩種情況有什麼區別。
布爾結果= a || b;或布爾結果= Boolean.logicalOr(a,b);
我想在這裏把我的觀點放在上面的問題上。這裏是Boolean.logicalOr
public static boolean logicalOr(boolean paramBoolean1, boolean paramBoolean2)
{
return (paramBoolean1) || (paramBoolean2);
}
身體因此,我們可以看到,它在做什麼a || b
大勢所趨。但當我們使用Boolean.logicalOr
而不是||
時,它變成非短路。因爲它(Boolean.logicalOr
)將被視爲(a || b)
,與a || b
不同時,它與其他一些邏輯運算符一起使用。
示例 - 請參閱以下代碼片段...
public static void main(String[] args) {
boolean bCheck1 = false, bCheck2 = true, bCheck3 = false;
System.out.println("bCheck1\t" + "bCheck2\t" + "bCheck3\t" + "checkOR-Result\t" + "checkLogicalOr-Result");
bCheck1 = true; bCheck2 = true; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = true; bCheck2 = true; bCheck3 = false;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = true; bCheck2 = false; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = true; bCheck2 = false; bCheck3 = false;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = false; bCheck2 = true; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = false; bCheck2 = true; bCheck3 = false;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = false; bCheck2 = false; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = false; bCheck2 = false; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
}
private static boolean checkOR(boolean bCheck1, boolean bCheck2, boolean bCheck3){
return bCheck1 && bCheck2 || bCheck3;
}
private static boolean checkLogicalOr(boolean bCheck1, boolean bCheck2, boolean bCheck3){
return bCheck1 && Boolean.logicalOr(bCheck2, bCheck3);
}
下面是結果:
bCheck1 bCheck2 bCheck3 checkOR-Result checkLogicalOr-Result
true true true true true
true true false true true
true false true true true
true false false false false
false true true true false
false true false false false
false false true true false
false false true true false
我們可以看到,每當它已經與其他邏輯運算符使用它產生不同的結果。所以需要謹慎使用||
而不是Boolean.logicalOr
,反之亦然。顯然Boolean.logicalOr
比||
更具可讀性。但每個人都有其重要意義,可以用於下面。
if(bCheck1 && bCheck2 || bCheck3)
不能被if(bCheck1 && Boolean.logicalOr(bCheck2, bCheck3))
代替
但是將if(bCheck1 && (bCheck2 || bCheck3))
更換爲if(bCheck1 && Boolean.logicalOr(bCheck2, bCheck3))
絕對是一個好主意。
javadoc說什麼?它是否有'@ see'參考可能有幫助? –
在功能上,它們是相同的,但請不要在代碼中寫入'Boolean.logicalOr(a,b)'。當你有多個功能相同的編寫代碼的方法時,你應該總是選擇最具可讀性的。 – VGR