오늘은 어디로 갈까...

&와 &&의 차이 본문

낙서

&와 &&의 차이

剛宇 2009. 2. 25. 09:38
 자바 AND 연산자는 '&'와 '&&'가 있다. 이 두개의 차이는 무엇일까? 몰라도 살아가는데 전혀 문제가 없지만, 심심하니 알아보도록 하자. 정답을 말해버리자면 &는 두 조건을 무조건 검사하는것이고, &&는 첫번째 조건이 참일때만 검사하는것이다. AND란 두 조건이 모두 참(true)이어야하므로, 첫번째 조건이 거짓(false)이면 굳이 두번째 조건을 검사할 필요가 없을 것이다. 이 '&&'이 그런 역할을 한다는 것이다.
 직접 구현해보도록 하자.
public class AndOrTest {

	public static boolean condition(String msg, boolean result) {
		System.out.println(result + " : " + msg);
		return result;
	}
	
	public static void main(String[] args) {
		System.out.println("& Test");
		if (condition("첫번째조건", false) & condition("두번째조건", false)) {
			System.out.println("조건을 만족하였습니다.");
		}
		System.out.println("&& Test");
		if (condition("첫번째조건", false) && condition("두번째조건", false)) {
			System.out.println("조건을 만족하였습니다.");
		}
		
		System.out.println("| Test");
		if (condition("첫번째조건", true) | condition("두번째조건", true)) {
			System.out.println("조건을 만족하였습니다.");
		}
		System.out.println("|| Test");
		if (condition("첫번째조건", true) || condition("두번째조건", true)) {
			System.out.println("조건을 만족하였습니다.");
		}
	}
}
* 출력 결과
& Test
false : 첫번째조건
false : 두번째조건
&& Test
false : 첫번째조건
| Test
true : 첫번째조건
true : 두번째조건
조건을 만족하였습니다.
|| Test
true : 첫번째조건
조건을 만족하였습니다.

처음에 얘기한데로, &일 경우는 첫번째 조건이 거짓임에도 두번째 조건까지 검사하고, &&일 경우는 첫번째 조건이 거짓이라서 두번째 조건은 검사를 안한다.
OR 연산자(|, ||)도 같은 원리이다. |일 경우는 무조건 두 조건을 검사하고, ||일 경우는 첫번째 조건이 참(true)이면 두번째 조건을 검사하지 않는다. (OR는 둘 중 하나라도 참이면 되므로)