Operator Bitwise & vs Logical &&

1. Perkenalan

Di Java, kami punya dua cara untuk mengatakan "DAN". Tapi yang mana yang harus digunakan?

Dalam tutorial ini, kita akan melihat perbedaan antara & dan &&. Dan, kita akan belajar tentang operasi bitwise dan hubungan arus pendek di sepanjang jalan.

2. Penggunaan Bitwise AND

Operator bitwise AND (&) membandingkan setiap digit biner dari dua bilangan bulat dan mengembalikan 1 jika keduanya adalah 1, jika tidak, ia mengembalikan 0.

Mari kita lihat dua bilangan bulat:

int six = 6; int five = 5;

Selanjutnya, mari terapkan operator DAN bitwise pada angka-angka ini:

int resultShouldBeFour = six & five; assertEquals(4, resultShouldBeFour);

Untuk memahami operasi ini, mari kita lihat representasi biner dari setiap bilangan:

Binary of decimal 4: 0100 Binary of decimal 5: 0101 Binary of decimal 6: 0110

Operator & melakukan logika AND pada setiap bit, dan mengembalikan bilangan biner baru:

0110 0101 ----- 0100

Akhirnya, hasil kita - 0100 - dapat diubah kembali menjadi angka desimal - 4 .

Mari kita lihat kode Java uji:

int six = 6; int five = 5; int resultShouldBeFour = six & five; assertEquals(4, resultShouldBeFour);

2.1. Penggunaan & dengan Boolean

Juga, kita bisa menggunakan operator bitwise AND ( & ) dengan operan boolean . Ini mengembalikan true hanya jika kedua operannya benar , jika tidak, mengembalikan salah.

Mari kita ambil tiga variabel boolean :

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false;

Selanjutnya, mari terapkan operator bitwise AND pada variabel trueBool dan anotherTrueBool :

boolean trueANDtrue = trueBool & anotherTrueBool;

Kemudian, hasilnya akan benar .

Selanjutnya, mari terapkan operator bitwise AND pada trueBool dan falseBool :

boolean trueANDFalse = trueBool & falseBool;

Dalam kasus ini, hasilnya akan salah .

Mari kita lihat kode Java uji:

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false; boolean trueANDtrue= trueBool & anotherTrueBool; boolean trueANDFalse = trueBool & falseBool; assertTrue(trueANDtrue); assertFalse(trueANDFalse);

3. Penggunaan Logical AND

Seperti & , operator logika AND ( && ) membandingkan nilai dari dua variabel atau ekspresi boolean. Dan, ia juga mengembalikan nilai benar hanya jika kedua operan benar , jika tidak, ia mengembalikan salah .

Mari kita ambil tiga variabel boolean :

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false;

Selanjutnya, mari terapkan operator logika AND pada variabel trueBool dan anotherTrueBool :

boolean trueANDtrue = trueBool && anotherTrueBool;

Kemudian, hasilnya akan benar .

Selanjutnya, mari terapkan operator logika AND pada trueBool dan falseBool :

boolean trueANDFalse = trueBool && falseBool;

Dalam kasus ini, hasilnya akan salah .

Mari kita lihat kode Java uji:

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false; boolean anotherFalseBool = false; boolean trueANDtrue = trueBool && anotherTrueBool; boolean trueANDFalse = trueBool && falseBool; boolean falseANDFalse = falseBool && anotherFalseBool; assertTrue(trueANDtrue); assertFalse(trueANDFalse); assertFalse(falseANDFalse);

3.1. Sirkuit pendek

Lalu apa bedanya? Nah, hubungan pendek operator && . Ini berarti ia tidak mengevaluasi operan atau ekspresi sisi kanan ketika operan atau ekspresi sisi kiri salah .

Mari kita ambil dua ekspresi yang mengevaluasi sebagai salah:

First Expression: 2<1 Second Expression: 4<5 

Ketika kita menerapkan operator logika AND pada ekspresi 2 <1 dan 4 <5, maka itu hanya mengevaluasi ekspresi pertama 2 <1 dan mengembalikan false.

boolean shortCircuitResult = (2<1) && (4<5); assertFalse(shortCircuitResult);

3.2. Penggunaan && dengan Integer

Kita bisa menggunakan operator & dengan tipe boolean atau numerik tetapi && hanya bisa digunakan dengan operan boolean. Menggunakannya dengan operan integer menghasilkan kesalahan kompilasi:

int five = 2; int six = 4; int result = five && six;

4. Perbandingan

  1. Operator & selalu mengevaluasi kedua ekspresi, sedangkan operator && mengevaluasi ekspresi kedua hanya jika yang pertama benar
  2. & membandingkan setiap operan secara bitwise, sedangkan && hanya beroperasi pada boolean

5. Kesimpulan

Pada artikel ini, kami menggunakan operator & bitwise untuk membandingkan bit dari dua digit sehingga menghasilkan digit baru. Selain itu, kami menggunakan operator logika && untuk membandingkan dua boolean, yang menghasilkan nilai boolean.

Kami juga melihat beberapa perbedaan utama antara kedua operator tersebut.

Seperti biasa, Anda dapat menemukan kode untuk tutorial ini di GitHub.