Bitvise operatorer (&, XOR, <<, ...) - 1

"Hei, Amigo!"

"En liten leksjon til om bitvise operatører."

"Du vet at i tillegg til de logiske operatorene AND (&&), OR (||) og NOT (!), er det også bitvise operatorer AND (&), OR (|), NOT (~) og XOR(^ ), Ikke sant?"

"Japp. Bilaabo ga en gang en veldig god leksjon om dette."

"Vel, om disse operatørene. Jeg har to ting å fortelle deg:"

"For det første, bortsett fra NOT (~), kan de brukes på boolske variabler, akkurat som logiske operatorer."

"For det andre gjelder ikke lat evaluering for dem."

"Se på dette eksemplet:"

Kode Tilsvarende kode
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());
  }
 }
}

"Er venstre side mer kompakt enn høyre?"

"Japp."

"Og har det samme betydning?"

"Japp."

"Helt riktig. Men se nå på det samme uttrykket med bitvise operatorer :"

Kode Tilsvarende kode
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());
 }
 }
}

"Med andre ord, koden er den samme, men absolutt hver operasjon vil bli utført."

"Merk at hvis a er null, vil et unntak bli kastet når c2 beregnes!"

"Ah. Jeg kan se det klarere nå."