web-dev-qa-db-ja.com

Javaの&と&&の違いは?

可能な重複:
|との違いは何ですか。と|| Javaで?
&と&&の違い

&&の違いはなんでしょうか。
数日、私は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」を印刷しました。それで、両方がうまくいくなら、どちらを使うかは重要ですか?

146
Mxyk

&はビット単位です。 &&は論理的です。

&は演算の両側を評価します。
&&は操作の左側を評価し、それがtrueの場合は続行し、右側を評価します。

359
Jeffrey

&は、各オペランドのビットを比較するビット単位の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つのオペランドを取り、それらに対して遅延評価を行います。

69
suat

&& ==論理積

&=ビットごとのAND

42
Book Of Zeus

'&'は両方のテストを実行しますが、 '&&'は最初のテストも真の場合のみ2番目のテストを実行します。これは短絡として知られており、最適化と見なすことができます。これは、nullness(NullPointerException)に対する保護に特に役立ちます。

if( x != null && x.equals("*BINGO*") {
  then do something with x...
}
32
mP.