티스토리 뷰
반응형
논리 연산자는 자주 사용하는 연산자인 것에 비해 헷갈리는 부분이 많다.
[x가 5보다 크다] 라는 조건을 연산자를 써서 표현한다면 [x > 5] 로 표현한다. 하지만 코드를 작성하다보면 이렇게 단순한 식이 아닌 복잡한 연산자를 수행해야 한다.
논리연산자에는 기본적으로 && / || / ! 가 있다.
&& | 그리고 (AND) |
|| | 또는 (OR) |
! | 부정 |
한가지 조건이 아닌 두가지 혹은 세가지 조건이 붙는 경우가 많다.
x는 1보다 크고, 10보다 작다. 라는 말은 쉽게 말해 x 는 1보다 크다. 그리고 10보다는 작다. 라는 말이다.
이 조건을 위에 대입하여 다음과 같이 쓸 수 있다.
x > 1 && x < 10
y는 2의 배수 또는 3의 배수이다.
이 조건을 위에 대입하여 다음과 같이 쓸 수 있다.
y%2 == 0 || y%3 == 0
이제 두가지 조건이 함께 사용되는 경우를 보자.
z는 2의 배수 또는 3의 배수지만 3은 아니다.
이 조건을 위에 대입하면 다음과 같이 쓸 수 있다.
( z%2 == 0 || z%3 == 0 ) && z != 3
위 식을 보면 괄호를 사용해야 하는 부분은 && 연산자가 || 연산자보다 우선순위가 높기 때문에 괄호가 없다면
z%2 == 0 || ( z%3 == 0 && z != 3 )
이런식의 연산되기 때문에 전혀 다른 결과가 나온다.
때문에 두가지 조건 이상을 연산하기 위해서는 괄호를 통해 명확하게 해주는 것이 좋다.
위의 형식을 테스트 해보면 다음과 같다.
예제
public class test2 {
public static void main(String[] args) {
int x = 0;
int y = 0;
int z = 0;
int x = 0;
int y = 0;
int z = 0;
x = 7;
System.out.printf("x=%2d, x > 1 && x < 10 = %b%n", x, x > 1 && x < 10);
// x= 7, x > 1 && x < 10 = true
x = 11;
System.out.printf("x=%2d, x > 1 && x < 10 = %b%n", x, x > 1 && x < 10);
// x=11, x > 1 && x < 10 = false
y = 3;
System.out.printf("y=%2d, y%%2 == 0 || y%%3 == 0 = %b%n", y, y%2 == 0 || y%3 == 0);
// y= 3, y%2 == 0 || y%3 == 0 = true
y = 4;
System.out.printf("y=%2d, y%%2 == 0 || y%%3 == 0 = %b%n", y, y%2 == 0 || y%3 == 0);
// y= 4, y%2 == 0 || y%3 == 0 = true
y = 5;
System.out.printf("y=%2d, y%%2 == 0 || y%%3 == 0 = %b%n", y, y%2 == 0 || y%3 == 0);
// y= 5, y%2 == 0 || y%3 == 0 = false
z = 3;
System.out.printf("z=%2d, ( z%%2 == 0 || z%%3 == 0 ) && z != 3 = %b%n", z, ( z%2 == 0 || z%3 == 0 ) && z != 3);
// z= 3, ( z%2 == 0 || z%3 == 0 ) && z != 3 = false
z = 4;
System.out.printf("z=%2d, ( z%%2 == 0 || z%%3 == 0 ) && z != 3 = %b%n", z, ( z%2 == 0 || z%3 == 0 ) && z != 3);
// z= 4, ( z%2 == 0 || z%3 == 0 ) && z != 3 = true
z = 5;
System.out.printf("z=%2d, ( z%%2 == 0 || z%%3 == 0 ) && z != 3 = %b%n", z, ( z%2 == 0 || z%3 == 0 ) && z != 3);
// z= 5, ( z%2 == 0 || z%3 == 0 ) && z != 3 = false
}
}
실행결과
x= 7, x > 1 && x < 10 = true
x=11, x > 1 && x < 10 = false
y= 3, y%2 == 0 || y%3 == 0 = true
y= 4, y%2 == 0 || y%3 == 0 = true
y= 5, y%2 == 0 || y%3 == 0 = false
z= 3, ( z%2 == 0 || z%3 == 0 ) && z != 3 = false
z= 4, ( z%2 == 0 || z%3 == 0 ) && z != 3 = true
z= 5, ( z%2 == 0 || z%3 == 0 ) && z != 3 = false
반응형
'IT & programming > Java' 카테고리의 다른 글
8/23 - 채팅 소스, 채팅 클라이언트 부분 (0) | 2012.08.23 |
---|---|
8/23 - 채팅 소스, 클라이언트 쓰레드 부분 (0) | 2012.08.23 |
8/23 - 채팅 소스, 서버 구축 (0) | 2012.08.23 |
8/22 - I/O, 스트림, IOEx 예제문제 (0) | 2012.08.22 |
8/21 - AWT, 로그인 예제, Adapter클래스 이용 (0) | 2012.08.21 |
댓글