Bitweise Operatoren (&, XOR, <<, ...) – 1

„Hallo, Amigo!“

„Noch eine kleine Lektion über bitweise Operatoren.“

„Sie wissen, dass es neben den logischen Operatoren AND (&&), OR (||) und NOT (!) auch die bitweisen Operatoren AND (&), OR (|), NOT (~) und XOR(^) gibt ), Rechts?"

„Ja. Bilaabo hat einmal eine sehr gute Lektion darüber gegeben.“

„Nun, zu diesen Operatoren. Ich muss Ihnen zwei Dinge sagen:“

„Erstens können sie mit Ausnahme von NOT (~) auf boolesche Variablen angewendet werden, genau wie logische Operatoren.“

„Zweitens gilt für sie keine faule Bewertung.“

„Sehen Sie sich dieses Beispiel an:“

Code Äquivalenter Code
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());
  }
 }
}

„Ist die linke Seite kompakter als die rechte?“

"Ja."

„Und hat es die gleiche Bedeutung?“

"Ja."

„Ganz richtig. Aber schauen Sie sich jetzt den gleichen Ausdruck mit bitweisen Operatoren an :“

Code Äquivalenter Code
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());
 }
 }
}

„Mit anderen Worten, der Code ist derselbe, aber absolut jede Operation wird ausgeführt.“

„Beachten Sie, dass bei der Berechnung von c2 eine Ausnahme ausgelöst wird, wenn a null ist!“

„Ah. Das kann ich jetzt deutlicher sehen.“