Opérateurs au niveau du bit (&, XOR, <<, ...) - 1

« Salut Amigo ! »

"Encore une petite leçon sur les opérateurs au niveau du bit."

"Vous savez qu'en plus des opérateurs logiques AND (&&), OR (||) et NOT (!), il existe également des opérateurs binaires AND (&), OR (|), NOT (~) et XOR(^ ), droite?"

"Ouais. Bilaabo a donné une fois une très bonne leçon à ce sujet."

"Eh bien, à propos de ces opérateurs. J'ai deux choses à vous dire :"

"Tout d'abord, à l'exception de NOT (~), ils peuvent être appliqués à des variables booléennes, tout comme les opérateurs logiques."

"Deuxièmement, l'évaluation paresseuse ne s'applique pas à eux."

"Regardez cet exemple :"

Code Code équivalent
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());
  }
 }
}

"Est-ce que le côté gauche est plus compact que le droit?"

"Ouais."

« Et est-ce que ça a le même sens ?

"Ouais."

"Tout à fait. Mais regardez maintenant la même expression en utilisant des opérateurs au niveau du bit :"

Code Code équivalent
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());
 }
 }
}

"En d'autres termes, le code est le même, mais absolument toutes les opérations seront effectuées."

"Notez que si a est nul, une exception sera levée lors du calcul de c2 !"

"Ah. Je peux voir ça plus clairement maintenant."