次の2つのケースの違いは何ですか?
ブール結果= a || b;またはブール結果=ブール値。論理値(a、b);
私は上記の質問に関してここにポイントを入れたいと思います。ここでBoolean.logicalOr
public static boolean logicalOr(boolean paramBoolean1, boolean paramBoolean2)
{
return (paramBoolean1) || (paramBoolean2);
}
のボディは、だから我々はそれが最終的にa || b
をやっていることがわかりますです。しかし||
の代わりにBoolean.logicalOr
を使用すると非短絡になります。なぜなら、それは他の論理演算子に付属しているa || b
とは異なる(a || b)
と考えられるからです(Boolean.logicalOr
)。
例:以下のスニペットコードを参照してください。以下は
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