[JAVA] &와 &&의 차이
목표
'&'와 '&&'의 차이를 명확하게 알고 사용할 수 있다.
개념
if (a & b & c) // 모든 조건(a, b, c)를 판별한다.
if (a && b && c) // 선행 조건(a)가 false이면 후행 조건(b,c)는 판별하지 않는다.
위 개념은 OR 연산자 |과 ||에도 적용된다.
활용
Null 객체의 멤버변수 판별하기
case1) & 사용
User user = null;
if (user != null & user.getName().equals("")) { // NullPointException
//...
}
NPE 에러가 발생한다.
user 객체가 null이어도 getName() 메서드를 실행하기 때문이다.
위 코드에서 NPE 에러를 발생시키지 않으려면,
다음과 같이 equals 메서드의 실행 주체를 바꿔줘야 한다.
if (user != null & "".equals(user.getName())
case2) && 사용
User user = null;
if (user != null && user.getName().equals("")) {
//...
}
NPE 에러가 발생하지 않는다.
user 객체가 null 이면 getName() 메서드를 실행하지 않기 때문이다.