본문 바로가기
Java

[Java] 논리 연산자 / &&(논리 곱) / ||(논리 합) // !(부정) / 논리 연산에서 모든 항이 실행되지 않을 경우 - 단락 회로 평가

by bkuk 2022. 9. 26.

논리 연산자

 

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

 

 

 

예제

public class OperationEx3 {
    public static void main(String[] args) {
        
        int num1 = 10;
        int num2 = 20;

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

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

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

 

출력

 

 

 

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

public class OperationEx4 {
    public static void main(String[] args) {

        int num1 = 10;
        int i = 2;

		//논리 곱에서 앞 항이 거짓이면 뒷 항이 실행되지 않아서 i값은 그대로
        boolean value = (( num1 = num1 + 10) < 10) &&  ((i = i + 2) < 10 );

        System.out.println(value);
        System.out.println(num1);
        System.out.println(i);

		////논리 합에서 앞 항이 참이면 뒷 항이 실행되지 않아서 i값은 그대로
        value = (( num1 = num1 + 10) > 10) ||  ((i = i + 2) < 10 );
        System.out.println(value);
        System.out.println(num1);
        System.out.println(i);

		//논리 합에서 앞 항이 거짓이면 뒷 항이 실행되면서 i값이 변함
        value = (( num1 = num1 + 10) < 10) ||  ((i = i + 2) < 10 );
        System.out.println(value);
        System.out.println(num1);
        System.out.println(i);
    }
}

 

댓글