Java での演算子の優先順位に関して何が正しいのか、私は混乱しています。AND は OR よりも優先度が高いというチュートリアルをずっと前に読みました。これは、質問で提供された回答によって確認されます。しかし、私は現在、「Sun Certified Programmer for Java 6 Study Guide」を使用して Java を勉強しています。この本には、次の例が含まれています。
int y = 5;
int x = 2;
if ((x > 3) && (y < 2) | doStuff()) {
System.out.println("true");
}
コンパイラが上記のコードを処理する方法の説明をコピーして引用しています。
If (x > 3)
istrue
、またはis(y < 2)
の結果の いずれか、次に print 。短絡のため、式は の周りに括弧があるかのように評価されます。つまり、 の前の単一の式と の後の単一の式として評価されます。doStuff()
true
"true"
&&
(y < 2) | doStuff()
&&
&&
これは、|
よりも優先順位が高いことを意味します&&
。それは、短絡ORの代わりに「非短絡OR」を使用したためですか?何が本当?