2026년 02월 23일

✅ 참과 거짓, 단 두 가지만 저장한다

Java Spring Boot
Cover Image

✅ 참과 거짓, 단 두 가지만 저장한다

— boolean 타입 완전 정복

핵심 요약: booleantrue 또는 false 단 두 가지 값만 저장하는 타입이다.
프로그램의 상태를 표현하고, 조건문과 제어 흐름을 결정하는 데 핵심적으로 사용된다.


1️⃣ boolean 타입 기본

boolean isRunning = true;
boolean isStopped = false;
리터럴의미메모리 크기
true참 (조건 성립)1byte
false거짓 (조건 불성립)1byte

💡 Java의 boolean01로 표현하지 않는다.
C/C++과 달리 true/false 리터럴만 허용하며, 정수값 대입 시 컴파일 에러가 발생한다.

boolean flag = 1;     // ❌ 컴파일 에러 (C언어와 다름!)
boolean flag = true;  // ✅

2️⃣ boolean의 주된 용도 — 상태 표현과 제어 흐름

상태값 저장 후 조건문에 활용

boolean stop = true;

if (stop) {
    System.out.println("중지합니다.");  // ← stop이 true면 실행
} else {
    System.out.println("시작합니다.");  // ← stop이 false면 실행
}
// 출력: 중지합니다.

3️⃣ 비교 연산식 → boolean 결과

비교 연산과 논리 연산의 결과는 항상 true 또는 false이므로 boolean 변수에 직접 저장할 수 있다.

비교 연산자

연산식의미x = 10일 때 결과
x == 20x의 값이 20인가?false
x != 20x의 값이 20이 아닌가?true
x > 20x의 값이 20보다 큰가?false
x >= 10x의 값이 10 이상인가?true
x < 20x의 값이 20보다 작은가?true

논리 연산자 (조건 결합)

연산식의미x = 10일 때 결과
0 < x && x < 20x가 0보다 크고, 20보다 작은가?true
x < 0 \|\| x > 200x가 0보다 작거나, 200보다 큰가?false
int x = 10;

boolean result1 = (x == 20);            // false
boolean result2 = (x != 20);            // true
boolean result3 = (x > 20);             // false
boolean result4 = (0 < x && x < 20);    // true  (범위 체크)
boolean result5 = (x < 0 || x > 200);  // false

System.out.println("result1: " + result1);  // false
System.out.println("result2: " + result2);  // true
System.out.println("result4: " + result4);  // true
System.out.println("result5: " + result5);  // false

4️⃣ 실무 활용 패턴

메서드 반환값으로 상태 표현

// 반환 타입이 boolean인 메서드
public boolean isAdult(int age) {
    return age >= 18;
}

public boolean isEmpty(String str) {
    return str == null || str.isEmpty();
}

// 사용
if (isAdult(20)) {
    System.out.println("성인입니다.");
}

플래그(Flag) 변수로 루프 제어

boolean found = false;
int[] numbers = {3, 7, 2, 9, 5};

for (int num : numbers) {
    if (num == 9) {
        found = true;
        break;
    }
}

System.out.println("9를 찾았나요? " + found);  // true

네이밍 컨벤션 — boolean 변수는 is, has, can으로 시작

boolean isLoggedIn  = true;   // 로그인 상태인가?
boolean hasPermission = false; // 권한이 있는가?
boolean canEdit = true;        // 수정 가능한가?
boolean isEmpty = false;       // 비어있는가?

💡 is, has, can 접두사를 붙이면 변수 이름만 봐도 boolean임을 즉시 알 수 있다.
Java 표준 네이밍 컨벤션이자 가독성을 높이는 실무 관행이다.


5️⃣ ⚠️ 주의사항 — == vs equals()

// 원시 타입 boolean: == 사용 ✅
boolean a = true;
boolean b = true;
System.out.println(a == b);  // true

// 래퍼 클래스 Boolean: equals() 사용 ✅
Boolean x = Boolean.TRUE;
Boolean y = Boolean.TRUE;
System.out.println(x.equals(y));  // true
System.out.println(x == y);       // true (캐싱으로 같은 객체지만, 일반적으로 equals 권장)

6️⃣ 핵심 정리

boolean = true 또는 false, 단 두 가지
        → 상태 표현 + 조건문 제어의 핵심 타입
개념한 줄 요약
booleantrue/false만 저장, 1byte, 정수 대입 불가
비교 연산==, !=, >, < 등의 결과가 boolean
논리 연산&&(AND), \|\|(OR)로 조건 결합
네이밍is, has, can 접두사로 가독성 향상
활용조건문, 루프 제어, 메서드 반환, 상태 플래그
← 목록으로 돌아가기