inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

If (후반전)

if문 - 부정연산자

1529

codingyoon

작성한 질문수 2

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")

 

java 객체지향 부정연산자

답변 2

0

codingyoon

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

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

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

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

0

나도코딩

그렇습니다. 조건식이 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)

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

자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?

1

146

2

static이 뭐였는지 기억이 안나요 ㅜㅜ

0

119

2

Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의

0

72

1

사고력 키우는 법이 어떤게 있나요?

0

94

2

getter setter

0

103

2

섹션9. 66 메소드 오버로딩 시 질문이 있습니다.

0

80

1

안녕하세요 갑자기 프로그램 에러가 떠서 안되네요

0

76

2

변수 이름짓는법

0

114

2

intelli J 실행오류

0

115

2

혹시 이건 수학적 사고가 부족한 걸까요?

0

152

2

영상이 재생이 안됩니다.

0

167

3

이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.

0

117

2

응용이 어렵습니다.

0

206

2

IntelliJ가 보이지 않습니다.

0

187

3

JDK 버전 문의

0

130

2

BlackBox 파일 내에서 메소드 정의

0

136

1

동기화

0

123

2

Iterator 문의

0

105

1

코드 순서 문의

0

143

1

클래스 메소드

0

150

2

Quiz_05 관련 질문드립니다 !

0

118

2

다운로드가 안됩니다

0

165

2

다형성

0

120

2

HashMap

0

80

2