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
! : 논리 부정
|| : 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인지 검사하지 않는다