인프런 커뮤니티 질문&답변

codingyoon님의 프로필 이미지
codingyoon

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

If (후반전)

if문 - 부정연산자

작성

·

1.1K

0

안녕하세요.

If문 부정연산자 관련하여 문의 드립니다.

 

아래 식에서 !(부정연산자)가 추가되어 false -> true 로 되는 것까지 이해하였습니다.

그럼 if (hour < 14 && morningCoffee == true) 라는 식이 성립되는데

if (hour < 14 && morningCoffee == false) 이 식과 어떻게 동일한지 이해가 되지 않습니다..

 

hour = 10;

boolean morningCoffee = false;

if (hour < 14 && !morningCoffee)

sout("아이스 아메리카노 +1")

 

답변 2

0

codingyoon님의 프로필 이미지
codingyoon
질문자

자세한 답변 감사합니다!!

그럼 1) false 로 선언된 변수에 부정연산자를 사용한 식은

모두 true 로 되어 조건문이 실행되는 걸까요?

제시해 주신 사례처럼 변수가 하나만 있다고 가정했을 때에요!

나도코딩님의 프로필 이미지
나도코딩
지식공유자

그렇습니다. 조건식이 false 이거나 사용된 boolean 변수의 값이 false 라면, 그 앞에 느낌표 (부정연산자) 를 붙이면 false 의 반대인 true 가 되므로 조건문 내의 명령문이 실행됩니다 😊 아래 예시를 몇 가지 적어봤는데 결과적으로 모든 if 문 내의 문장들이 실행됩니다. 살펴보시면 도움될거에요 💪

boolean isHot = false;
if (!isHot) {
    System.out.println("덥지 않아요");
}

boolean isDark = false;
if (!isDark) {
    System.out.println("어둡지 않아요");
}

int num = 3;
if (!(num < 1)) {
    System.out.println(num + "은 1보다 작지 않아요");
}

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
논리 부정 연산자 ! 를 붙이면 bool 값의 반대가 됩니다. 그래서 true 는 false 로, false 는 true 로 되는 것이죠.
아래 문장에서 hour 부분은 제외하고 morningCoffee 만 남겨둬볼게요.

// 기존 코드
if (hour < 14 && morningCoffee == false)

// 수정 코드
if (morningCoffee == false)

그러면 위 조건문은 다음과 같이 동작하게 될 겁니다.

1) morningCoffee 가 true 이면?
if (true == false) => if 조건이 거짓이므로 조건문 실행 X

2) morningCoffee 가 false 이면?

if (false == false) => if 조건이 참이므로 조건문 실행 O

 

이번에는 논리 부정 연산자가 적용된 문장을 볼까요?
역시나 hour 부분은 제외해볼게요.

// 기존 코드
if (hour < 14 && !morningCoffee)

// 수정 코드
if (!morningCoffee)

그러면 위 조건문은 다음과 같이 동작하게 될 겁니다.

1) morningCoffee 가 true 이면?
if (!true) => if (false) 와 동일하므로 조건문 실행 X (if 조건이 거짓이므로)

2) morningCoffee 가 false 이면?
if (!false) => if (true) 와 동일하므로 조건문 실행 O (if 조건이 참이므로)

결과적으로 아래 두 조건문은 동일한 목적으로 사용될 수 있습니다.

if (morningCoffee == false)
if (!morningCoffee)

이해에 도움되길 바라겠습니다 😊
감사합니다.

codingyoon님의 프로필 이미지
codingyoon

작성한 질문수

질문하기