CodeGym /행동 /JAVA 25 SELF /논리형 boolean과 논리 연산

논리형 boolean과 논리 연산

JAVA 25 SELF
레벨 3, 레슨 3
사용 가능

1. 논리형 데이터 타입: boolean

이미 확인했듯이 Java에는 매우 유용한 제어문 — if-else가 있습니다. 괄호 안의 조건이 참이면 한 블록의 명령을, 조건이 거짓이면 다른 블록의 명령을 실행합니다.

참 또는 거짓이 될 수 있는 표현식을 편하게 다루기 위해 Java에는 특별한 타입 — boolean이 있습니다. 이 타입 변수의 가장 큰 특징은 단 두 가지 값만 가질 수 있다는 점입니다: true(참)와 false(거짓).

그 외의 값을 boolean 타입 변수에 대입하는 것은 불가능합니다. 컴파일러가 허용하지 않습니다.

boolean 타입 변수의 예:

boolean isAdult = true;
boolean hasMoney = false;
boolean 변수 선언 예시

boolean 타입 변수의 값은 truefalse 두 가지뿐입니다. 끝! 성공한 테스트처럼 — “통과” 아니면 “실패”입니다.

2. 비교 연산

그렇다면 이렇게 단순한 타입이 왜 필요할까요? boolean의 진짜 위력은 우리가 논리 표현식을 만들 때 드러납니다. 보통은 비교 연산자를 이용해 만듭니다.

연산자 의미
== 같다
a == b
true 또는 false
!= 같지 않다
a != b
true 또는 false
> 크다
a > b
true 또는 false
< 작다
a < b
true 또는 false
>= 크거나 같다
a >= b
true 또는 false
<= 작거나 같다
a <= b
true 또는 false

예:

int age = 20;
boolean isAdult = age >= 18;   // true (20은 18보다 크거나 같다)
boolean isTeenager = age >= 13 && age < 18; // false (20은 18보다 작지 않다)
boolean isEven = age % 2 == 0; // true (20은 2로 나누어 떨어진다)

여기서는 isAdulttrue가 됩니다. 20은 정말로 “성인” 나이이니까요.

중요 포인트 1:

두 글자로 이루어진 연산자는 띄어 쓰면 안 됩니다.


a < = 10
speed > = max
age = = 18
time ! = 0
이렇게 쓰면 안 됩니다! 연산자는 붙여써야 합니다: <=, >=, ==, !=

중요 포인트 2:

=>=< 같은 연산자는 없습니다. 오직 <=>=만 있습니다. 만약 a =< 3처럼 쓰면, 코드는 컴파일되지 않습니다.

중요 포인트 3:

Java에서는 18 < age < 65 형태로 표현할 수 없습니다. 왜냐하면 18 < age라는 표현식의 값은 true 또는 false가 되기 때문입니다. 그리고 true를 숫자(65)와 비교할 수는 없습니다 — 타입이 다릅니다.

3. 논리 연산

Java에서는 18 < age < 65 같은 표현을 쓸 수 없습니다 — 문법적으로 잘못이며 프로그램이 컴파일되지 않습니다.

대신 이렇게 쓸 수 있습니다:


(18 < age) I (age < 65)
두 가지 조건이 있는 논리식(러시아어 표기)

물론 그리고라는 단어 대신 논리 연산자를 사용합니다. Java에는 세 가지 논리 연산자가 있습니다: AND(그리고), OR(또는), NOT(부정).

좋은 소식: 괄호를 사용하면 얼마든지 복잡한 논리식을 만들 수 있습니다.
나쁜 소식: Java에서는 and, or, not 같은 단어 대신 C 계열의 기호 &&, ||, !를 사용합니다.

논리 연산자 기대 실제
그리고 (∧) and &&
또는 (∨) or ||
부정 (¬) not !

다음은 Java에서 논리 연산자를 사용하는 몇 가지 예입니다:

표현식 해석 설명
(0 < a) && (a < 100)
(0 < a) and (a < 100) (0 < a) 그리고 (a < 100)
(!a) && (!b)
(not a) and (not b) (아닌 a) 그리고 (아닌 b)
!(!a || !b)
not((not a) or (not b)) 부정((아닌 a) 또는 (아닌 b))

4. 진리표

논리 연산을 간단히 훑어보겠습니다.

AND 연산자

AND 연산자, 즉 그리고, &&, 결합(컨정션, conjunction), 논리적 곱이라고도 합니다.

표현식 결과
true && true true
true && false false
false && true false
false && false false

OR 연산자

OR 연산자, 즉 또는, ||, 논리합(디스정션, disjunction), 논리적 합이라고도 합니다.

표현식 결과
true || true true
true || false true
false || true true
false || false false

NOT 연산자

NOT 연산자, 즉 부정, !, 반전(인버전)이라고도 합니다.

표현식 결과
! true false
! false true

유용한 항등식:

표현식 결과
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b

5. 논리 연산 예시: and, or, not

연산 “그리고”(AND)는 &&로 표기합니다

두 조건이 모두 참일 때만 결과가 참입니다.

int age = 16;
boolean hasTicket = true;
boolean canAttend = age >= 14 && hasTicket; // true (16은 14보다 크고 티켓이 있다)

나이가 14 이상이고 그리고 티켓이 있으면 — 통과!

연산 “또는”(OR)은 (||)로 표기합니다

둘 중 하나라도 참이면 결과는 참입니다.

boolean isAdmin = false;
boolean isModerator = true;
boolean canEdit = isAdmin || isModerator; // true (둘 중 하나라도 true이면 편집할 수 있다)

관리자 또는 모더레이터라면 — 마음껏 버튼을 누르세요!

연산 “부정”(NOT)은 (!)로 표기합니다

부정은 참을 거짓으로, 거짓을 참으로 뒤집습니다.

boolean isWeekend = false;
boolean shouldGoToWork = !isWeekend; // true (주말이 아니면 일한다)

부정이 아니면 — 일어날 시간!

조합하기: 얼마든지 복잡한 조건을 만들 수 있습니다

논리 연산은 원하는 만큼 조합할 수 있습니다(너무 복잡하게 만들지만 마세요). 괄호는 가독성을 위해 적극적으로 사용하세요.

예:

int age = 17;
boolean hasTicket = false;
boolean isVip = true;

boolean canGo = (age >= 18 && hasTicket) || isVip; // true, 왜냐하면 isVip = true

논리: 성인이면서 티켓이 있거나 VIP라면 — 입장. VIP가 아니라면 성인이면서 티켓이 있을 때만 입장.

1
과제
JAVA 25 SELF, 레벨 3, 레슨 3
잠금
진실 찾기 🧐
진실 찾기 🧐
1
과제
JAVA 25 SELF, 레벨 3, 레슨 3
잠금
경기 결과 ⚽
경기 결과 ⚽
1
과제
JAVA 25 SELF, 레벨 3, 레슨 3
잠금
피크닉 계획 🧺
피크닉 계획 🧺
1
과제
JAVA 25 SELF, 레벨 3, 레슨 3
잠금
실내 쾌적 온도 🌡️
실내 쾌적 온도 🌡️
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION