비트 연산자(&, XOR, <<, ...) - 1

"안녕, 아미고!"

"비트 연산자에 대한 작은 교훈 하나 더."

"논리 연산자 AND(&&), OR(||) 및 NOT(!) 외에도 비트 연산자 AND(&), OR(|), NOT(~) 및 XOR(^ ), 오른쪽?"

"예. Bilaabo는 이것에 대해 아주 좋은 교훈을 준 적이 있습니다."

"음, 이 연산자들에 대해서요. 두 가지 말씀드릴 것이 있습니다."

"첫째, NOT(~)을 제외하고 논리 연산자와 마찬가지로 부울 변수에 적용할 수 있습니다."

"둘째, 게으른 평가가 적용되지 않습니다."

"이 예를 보십시오:"

암호 동등한 코드
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());
  }
 }
}

"왼쪽이 오른쪽보다 콤팩트한가요?"

"네."

"그리고 같은 의미가 있습니까?"

"네."

"맞습니다. 하지만 이제 비트 연산자를 사용하여 동일한 표현식을 살펴보겠습니다 ."

암호 동등한 코드
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());
 }
 }
}

"즉, 코드는 동일하지만 절대적으로 모든 작업이 수행됩니다."

"a가 null이면 c2를 계산할 때 예외가 발생합니다!"

"아. 이제 확실히 알겠어."