본문 바로가기
프로그래밍 언어/JAVA(자바) 기초

7.자바의 연산자들(관계,논리 연산자)

by lroot 2022. 5. 16.
728x90
반응형

관계 연산자

- 이항 연산자

- 연산의 결과가 TRUE(참), FALSE(거짓)으로 반환 됨, 비교연산자라고도 함

- 조건문, 반복문의 조건식으로 많이 사용 됨

연산자 기능
> 왼쪽 항이 크면 참, 아니면 거짓을 반환합니다. num > 3;
< 왼쪽 항이 작으면 참, 아니면 거짓을 반환합니다. num < 3;
>= 왼쪽 항이 오른쪽 항보다 크거나 같으면 참, 아니면 거짓을 반환합니다. num >= 3;
<= 왼쪽 항이 오른쪽 항보다 작거나 같으면 참, 아니면 거짓을 반환합니다. num <= 3;
== 두 개 항의 값이 같으면 참, 아니면 거짓을 반환합니다. num == 3;
!= 두 개 항이 다르면 참, 아니면 거짓을 반환합니다. num != 3;

 

예제)

public class RealationalTest {

public static void main(String[] args) {

int num1 = 5;
int num2 = 3;

boolean value = (num1>num2);
System.out.println(value);

System.out.println(num1 < num2);
System.out.println(num1 >= num2);
System.out.println(num1 <= num2);
System.out.println(num1 == num2);
System.out.println(num1 != num2);

      } 

}

 

논리 연산자

- 관계 연산자와 혼합하여 많이 사용 됨

- 연산의 결과가 true(참), false(거짓)으로 변환 됨

연산자 기능
&&
(논리 곱)
두 항이 모두 참인 경우에만 결과 값이 참. 
그렇지 않은 경우는 거짓.
booleanval = (5>3) && (5>2);
||
(논리 합)
두 항 중 하나의 항만 참이면 결과 값이 참.
두 항이 모두 거짓이면 결과 값은 거짓.
booleanval = (5>3) || (5<2);
!
(부정)
단항 연산자. 
참인 경우는 거짓으로 바꾸고, 
거짓인 경우는 참으로 바꾼다.
booleanval = !(5>3);

 

예제)

public class LogicalTest {

public static void main(String[] args) {

int num1 = 10;
int num2 = 20;

boolean flag = (num1 > 0) && (num2 > 0);
System.out.println(flag);

flag = (num1 < 0) && (num2 > 0);
System.out.println(flag);

flag = (num1 > 0) || (num2 > 0);
System.out.println(flag);

flag = (num1 < 0) || (num2 > 0);
System.out.println(flag);

flag = !(num1 > 0);
System.out.println(flag);

}

}

 

 

논리 연산에서 모든 항이 실행되지 않는 경우 - 단락 회로 평가(short circuit evaluation)

- 논리 곱( && )은 두 항의 결과가 모두 true 일 때만 결과가 true

-- 앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음

- 논리 합( || )은 두 항의 결과가 모두 false일 때만 결과가 false

-- 앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음

 

예제)

public class ShortCircuit {

public static void main(String[] args) {
 
int num1 = 10;
int i = 2;

boolean value = ((num1 = num1+10) < 10) && ((i=i+2)<10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);

value = ((num1 = num1+10)<10) || ((i=i+2)<10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);


}

}

댓글