Operator bitwise (&, XOR, <<, ...) - 1

"Hai, Amigo!"

"Satu lagi pelajaran kecil tentang operator bitwise."

"Kamu tahu bahwa selain operator logika AND (&&), OR (||) dan NOT (!), ada juga operator bitwise AND (&), OR (|), NOT (~), dan XOR(^ ), Kanan?"

"Ya. Bilaabo pernah memberikan pelajaran yang sangat bagus tentang ini."

"Nah, tentang operator-operator ini. Ada dua hal yang ingin saya sampaikan kepada Anda:"

"Pertama, kecuali NOT (~), mereka dapat diterapkan ke variabel boolean, seperti halnya operator logika."

"Kedua, evaluasi malas tidak berlaku untuk mereka."

"Lihat contoh ini:"

Kode Kode yang setara
if (a != null && a.getName() != null && c != null)
{
 c.setName(a.getName());
}
if (a != null)
{
 if (a.getName() != null)
 {
  if (c != null)
  {
   c.setName(a.getName());
  }
 }
}

"Apakah sisi kiri lebih kompak daripada kanan?"

"Ya."

"Dan apakah itu memiliki arti yang sama?"

"Ya."

"Betul. Tapi sekarang lihat ekspresi yang sama menggunakan operator bitwise :"

Kode Kode yang setara
if (a != null & a.getName() != null & c != null)
{
 c.setName(a.getName());
}
boolean c1 = (a != null);
boolean c2 = (a.getName() != null);
boolean c3 = (c != null);
if (c1)
{
 if (c2)
 {
  if (c3)
  {
   c.setName(a.getName());
 }
 }
}

"Dengan kata lain, kodenya sama, tetapi pasti setiap operasi akan dilakukan."

"Perhatikan bahwa jika a adalah nol, pengecualian akan dilontarkan saat menghitung c2!"

"Ah. Aku bisa melihatnya dengan lebih jelas sekarang."