Java SE Tutorials/Logical Operators

Java Logical Operators

Soul-Learner 2016. 12. 1. 12:21

Java 프로그래밍, 논리 연산자 ( Logical Operators )


논리 연산자 ( &&, ||, &, |, ! )는 true, false 값을 대상으로 연산을 수행하고 그 결과로 boolean 형의 값을 리턴하는 기능을 한다

&& : Logical AND ( Short circuit ) 단축 논리 AND
|| : Logical OR ( Short circuit ) 단축 논리 OR
& : 비단축 논리 AND
| : 비단축 논리 OR
! : 논리 부정


단축 논리 AND(&&), 단축 논리 OR(||), 논리부정(!) 연산자를 사용하는 예

public class Tutorials 
{
	public static void main(String[] args) 
	{
		// Calendar 클래스를 사용하는 방법도 알아볼 겸, 오늘의 요일을 구하여 평일인지 확인해보자
		Calendar cal = Calendar.getInstance();
		int today = cal.get(Calendar.DAY_OF_WEEK);
		
		// 오늘이 평일인지 확인해보자
		// today=1:일요일, today=7:토요일
		boolean isOrdinaryDay = (today>1 && today<7); // && 논리 AND 연산자
		
		System.out.printf("오늘은 평일인가? -> %b %n", isOrdinaryDay);
		
		// 오늘은 주말인가 확인해보자
		boolean isWeekend = (today==7 || today==1); // || 논리 OR 연산자
		System.out.printf("오늘은 주말인가? -> %b %n", isWeekend);
		
		// 위의 isWeekend 를 이용하여 오늘이 평일인지 다시 한번 확인해보자
		// 논리부정 연산자(!) 사용
		System.out.printf("오늘은 평일인가? -> %b %n", !isWeekend); 
		
		// 위의 기능을 3항 연산자를 이용하여 구현해보자
		String res = isOrdinaryDay ? "평일" : "주말";
		System.out.printf("오늘은 [%s]입니다 %n", res);
	}
}

위에서 사용한 &&, || 연산자 대신에 비단축 논리 AND(&), 비단축 논리 OR(|) 연산자를 사용해도 위와 동일한 결과가 나오지만, 단축 논리 연산자를 사용하면 성능상 더 유리하다. 위의 코드를 보면서 확인해보자

boolean isWeekend = (today==7 || today==1);

today==7 이라면 주말이므로 뒤에 오는 표현식, today==1의 값은 결과 값에 영향을 주지 못하므로 검사할 필요가 없다. 그러므로 단축 논리 OR 연산자를 사용하는 것이 비단축 논리 OR 연산자 ( | )를 사용하는 것보다 성능상 유리할 것이다. 이 경우 단축 논리 OR 연산자를 사용했기 때문에 today==1인지 검사하지 않는다