&と&&の違いはなんでしょうか。
数日、私はif
ステートメントの条件を書きました。
if(x < 50 && x > 0)
ただし、&&を単に&に変更したところ、エラーは表示されませんでした。違いは何ですか?
例:私はこの単純なプログラムをコンパイルしました:
package anddifferences;
public class Main {
public static void main(String[] args) {
int x = 25;
if(x < 50 && x > 0) {
System.out.println("OK");
}
if(x < 50 & x > 0) {
System.out.println("Yup");
}
}
}
「OK」と「Yup」を印刷しました。それで、両方がうまくいくなら、どちらを使うかは重要ですか?
&
はビット単位です。 &&
は論理的です。
&
は演算の両側を評価します。&&
は操作の左側を評価し、それがtrue
の場合は続行し、右側を評価します。
&は、各オペランドのビットを比較するビット単位のAND演算子です。
例えば、
int a = 4;
int b = 7;
System.out.println(a & b); // prints 4
//meaning in an 32 bit system
// 00000000 00000000 00000000 00000100
// 00000000 00000000 00000000 00000111
// ===================================
// 00000000 00000000 00000000 00000100
&&は、オペランドのブール値のみを比較する論理AND演算子です。ブール値を示す2つのオペランドを取り、それらに対して遅延評価を行います。
&& ==論理積
&=ビットごとのAND
'&'は両方のテストを実行しますが、 '&&'は最初のテストも真の場合のみ2番目のテストを実行します。これは短絡として知られており、最適化と見なすことができます。これは、nullness(NullPointerException)に対する保護に特に役立ちます。
if( x != null && x.equals("*BINGO*") {
then do something with x...
}