Java Boolean 클래스란?
Boolean 클래스는 자바의 기본 타입(primitive type)인 boolean 값을 객체 형태로 감싸는 래퍼(Wrapper) 클래스입니다. Boolean 타입의 객체 내부에는 boolean 타입의 단일 필드가 하나 포함되어 있으며, 이를 통해 기본 타입 값을 객체로 다룰 수 있습니다.
Boolean 클래스의 주요 필드
Boolean 클래스에는 다음과 같은 정적(static) 필드들이 정의되어 있습니다.
- static Boolean FALSE – 기본 값
false에 해당하는 Boolean 객체입니다. - static Boolean TRUE – 기본 값
true에 해당하는 Boolean 객체입니다. - static Class<Boolean> TYPE – 기본 타입
boolean을 나타내는 Class 객체입니다.
Boolean 클래스의 주요 메서드
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | boolean booleanValue() 이 Boolean 객체가 가진 값을 boolean 기본 타입으로 반환합니다. |
| 2 | int compareTo(Boolean b) 이 Boolean 인스턴스를 다른 Boolean 인스턴스와 비교합니다. |
| 3 | boolean equals(Object obj) 인수가 null이 아니며, 이 객체와 동일한 boolean 값을 나타내는 Boolean 객체일 때만 true를 반환합니다. |
| 4 | static boolean getBoolean(String name) 인수로 지정한 이름의 시스템 속성이 존재하고 그 값이 문자열 "true"와 같을 때만 true를 반환합니다. |
| 5 | int hashCode() 이 Boolean 객체의 해시 코드를 반환합니다. |
| 6 | static boolean parseBoolean(String s) 문자열 인수를 boolean 값으로 파싱(parse)합니다. |
| 7 | String toString() 이 Boolean 객체의 값을 문자열 형태로 표현한 String 객체를 반환합니다. |
그럼 실제 예제를 통해 살펴보겠습니다.
예제 1: equals() 메서드로 두 Boolean 값 비교하기
import java.lang.*;
public class Demo {
public static void main(String[] args){
Boolean val1, val2;
val1 = new Boolean(true);
val2 = new Boolean(true);
boolean res = val1.equals(val2);
System.out.println("두 Boolean 값이 서로 같은가요? = " + res);
}
}
실행 결과
두 Boolean 값이 서로 같은가요? = true
위 예제에서는 equals() 메서드를 사용해 두 Boolean 객체가 같은 값을 가지는지 확인했습니다. val1과 val2 모두 true로 생성되었기 때문에 비교 결과는 true입니다.
예제 2: hashCode()와 equals() 함께 활용하기
import java.lang.*;
public class Demo {
public static void main(String[] args){
Boolean val1, val2;
val1 = new Boolean(false);
val2 = new Boolean(true);
System.out.println("Value1 = " + val1);
System.out.println("Value2 = " + val2);
System.out.println("Value1의 해시코드 = " + val1.hashCode());
System.out.println("Value2의 해시코드 = " + val2.hashCode());
boolean res = val1.equals(val2);
System.out.println("두 Boolean 값이 서로 같은가요? = " + res);
}
}
실행 결과
Value1 = false
Value2 = true
Value1의 해시코드 = 1237
Value2의 해시코드 = 1231
두 Boolean 값이 서로 같은가요? = false
이번 예제에서는 값이 서로 다른 두 Boolean 객체를 비교했습니다. false의 해시 코드는 1237, true의 해시 코드는 1231로 서로 다르며, equals() 비교 결과 역시 false가 출력됩니다.
참고: 생성자 대신 valueOf() 사용 권장
참고로 new Boolean(true)처럼 생성자를 직접 호출하는 방식은 Java 9부터 deprecated(사용 자체 권장 안 함)로 지정되었습니다. 따라서 실무에서는 아래와 같이 Boolean.valueOf() 메서드나 오토박싱(auto-boxing)을 사용하는 것이 좋습니다.
Boolean val1 = Boolean.valueOf(true); // 권장 방식
Boolean val2 = true; // 오토박싱 활용
valueOf()는 미리 생성해 둔 TRUE/FALSE 객체를 재사용하므로 불필요한 객체 생성을 줄여 메모리 효율성까지 높일 수 있다는 장점이 있습니다.