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

"Hai, Amigo!"

"Satu lagi pelajaran kecil tentang pengendali bitwise."

"Anda tahu bahawa sebagai tambahan kepada operator logik AND (&&), OR (||) dan NOT (!), terdapat juga operator bitwise AND (&), OR (|), NOT (~), dan XOR(^ ), betul ke?"

"Ya. Bilaabo pernah memberi pengajaran yang sangat baik tentang perkara ini."

"Nah, mengenai pengendali ini. Saya ada dua perkara untuk diberitahu kepada anda:"

"Pertama, kecuali untuk NOT (~), ia boleh digunakan pada pembolehubah boolean, sama seperti pengendali logik."

"Kedua, penilaian malas tidak terpakai kepada mereka."

"Lihat contoh ini:"

Kod Kod 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());
  }
 }
}

"Adakah bahagian kiri lebih padat daripada sebelah kanan?"

"Ya."

"Dan adakah ia mempunyai maksud yang sama?"

"Ya."

"Betul. Tetapi sekarang lihat ungkapan yang sama menggunakan operator bitwise :"

Kod Kod 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());
 }
 }
}

"Dalam erti kata lain, kodnya adalah sama, tetapi sememangnya setiap operasi akan dilakukan."

"Perhatikan bahawa jika a adalah batal, pengecualian akan dilemparkan apabila mengira c2!"

"Ah. Saya boleh nampak dengan lebih jelas sekarang."