본문 바로가기

하고 싶은 거 하는 개발/Java 프로그래밍 기초

[JAVA] 자바(JAVA) 논리 연산자에 대하여(&&, ||, !)

728x90

 

지난 포스팅을 통해 비교 연산자의 결과(true, false)와 그것을 이용한 조건문에 대해 알아보았습니다. 

 

 비교 연산자

2020/11/22 - [하고 싶은 거 하는 개발/Java 프로그래밍 기초] - [JAVA] 자바(JAVA) 비교 연산자에 대하여(+equals, boolean 타입)

 

조건문

2021/01/21 - [하고 싶은 거 하는 개발/Java 프로그래밍 기초] - [JAVA] 자바(JAVA) 조건문에 대하여(if 문)

2021/01/25 - [하고 싶은 거 하는 개발/Java 프로그래밍 기초] - [JAVA] 자바(JAVA) 조건문에 대하여(switch 문)

 

이번 포스팅은 조건문에 이어 true, false 값을 이용하는 논리 연산자에 대하여 알아보겠습니다. 

 

연산자 의미
A && B A와 B 모두 TRUE
A || B A나 B 둘 중 하나가 TRUE
!A NOT A

 

&&

 

&& 연산자는 좌항과 우항의 값이 모두 true인 경우 연산의 결과로 true가 리턴됩니다. 그 외의 경우에는 false가 리턴됩니다.

예시와 함께 자세히 알아보겠습니다. 

 

		if( true && true ) {
			System.out.println( "true && true" );
		}
		
		if( true && false ) {
			System.out.println("true && false");
		}
		
		if( false && true ) {
			System.out.println("false && true");
		}
        
		if( false && false ) {
			System.out.println("false && false");
		}

 

위 코드의 결과로 무엇이 출력될까요?

 

 

3가지 경우 중 가장 첫 번째 경우인 "true && true"만 출력되었습니다. 

 

&& 연산자 좌항과 우항이 모두 true인 경우에만 true가 리턴된다고 말씀드렸습니다. 

 

실사례는 보통 아래와 같이 사용합니다. 

 

		int 몸무게 = 72;
		int 키 = 175;
		
		int 몸무게제한 = 50;
		int 키제한 = 150;
		
		if( 몸무게 > 몸무게제한 && 키 > 키제한 ) {
			System.out.println( "놀이기구 탑승 가능");
		} else {
			System.out.println( "놀이기구 탑승 불가");
		}

놀이공원에 가면 키와 몸무게에 제한이 있는 놀이기구가 있습니다.

이런 놀이기구의 경우 키와 몸무게 모두 제한을 넘겨야 이용할 수 있습니다. 

 

몸무게가 72kg, 키가 175cm인 사람이 몸무게 제한 50kg 초과, 키 제한 150cm 초과인 놀이기구를 이용하려고 합니다. 

몸무게 > 몸무게 제한 연산의 결과로 true가 리턴되고 또한 키 > 키 제한 연산의 결과로 true가 리턴됩니다. 

 

&& 연산자의 좌항과 우항 모두 true이므로 아래와 같이 "놀이기구 탑승 가능"이 출력됩니다.

 

 

동일한 놀이기구를 몸무게 52kg, 키 145cm인 사람이 이용하려고 할 경우는 어떨까요?

 

		int 몸무게 = 52;
		int 키 = 145;
		
		int 몸무게제한 = 50;
		int 키제한 = 150;
		
		if( 몸무게 > 몸무게제한 && 키 > 키제한 ) {
			System.out.println( "놀이기구 탑승 가능");
		} else {
			System.out.println( "놀이기구 탑승 불가");
		}

 

몸무게 > 몸무게제한 연산의 결과로 true가 리턴되지만 키 > 키 제한 연산의 결과는 false가 리턴됩니다.

&& 연산자 좌항은 true지만 우항이 false이므로 "놀이기구 탑승 불가"가 출력됩니다.

 

 

&& 연산자를 이해하셨다면 || 연사자 또한 쉽게 이해하실 수 있습니다. 

 


|| 

 

|| 연산자는 좌항이나 우항 중 하나라도 true이면 연산의 결과로 true가 리턴됩니다. 

 

		if( true || true ) {
			System.out.println( "true && true" );
		}
		
		if( true || false ) {
			System.out.println("true && false");
		}
		
		if( false || true ) {
			System.out.println("false && true");
		}
        
		if( false || false ) {
			System.out.println("false && false");
		}

위 코드의 결과를 쉽게 떠올리실 수 있으실 겁니다.

 

 

|| 연산자의 좌항과 우항이 모두 false인 4번째 경우를 제외한 3가지 경우가 모두 출력되었습니다. 

 

놀이기구의 예를 들어보면, 

 

		int 몸무게 = 52;
		int 키 = 145;
		
		int 몸무게제한 = 50;
		int 키제한 = 150;
		
		if( 몸무게 > 몸무게제한 || 키 > 키제한 ) {
			System.out.println( "놀이기구 탑승 가능");
		} else {
			System.out.println( "놀이기구 탑승 불가");
		}

 

몸무게 52kg, 키 145cm인 사람이 놀이기구를 타려고 할 때 키가 키 제한보다 작지만 몸무게가 몸무게 제한보다 커

놀이기구를 탈 수 있습니다. 

 

 


 

! 연산자는 부정의 의미로 !true로 쓰일 경우 not true, 즉 false가 되고,

!false로 쓰일 경우 not fals, 즉 true가 됩니다.

 

예시와 함께 알아보겠습니다. 

 

		if ( !true ) {
			System.out.println("true");
		} else {
			System.out.println("false");
		}

 

위 코드의 결과는 무엇일까요? 

 

 

if 뒤의 괄호에 !true, 즉 false가 존재하므로 else 뒤의 중괄호로 들어가 "false"가 출력되었습니다.

 

!false의 경우도 동일합니다. 

		if ( !false ) {
			System.out.println("true");
		} else {
			System.out.println("false");
		}

 

 

 

반응형