HOWTO · Java
Java에서 부울을 문자열로
이 튜토리얼에서는 Java에서 부울 값을 문자열로 변환하는 방법을 설명합니다.
이 페이지의 내용
Java에서 원시형 boolean과 래퍼 클래스 Boolean은 모두 true 또는 false를 나타냅니다. 원시형 값에는 String.valueOf(boolean) 또는 정적 메서드인 Boolean.toString(boolean) 오버로드를 사용할 수 있습니다. null이 아닌 Boolean 객체라면 인스턴스 메서드 toString()도 사용할 수 있습니다. 값이 더 큰 메시지의 일부라면 연결이나 서식을 활용하면 편리합니다. 이 변환 결과는 소문자이므로 true는 "true"가 되고 false는 "false"가 됩니다.
String.valueOf(boolean)으로 원시형 boolean을 문자열로 변환
String.valueOf(boolean)은 원시형 boolean을 받아 문자열 표현을 반환하는 String의 정적 메서드입니다. 값이 이미 원시형일 때 바로 사용할 수 있으며, 반환값을 저장하거나 비교하거나 String을 받는 메서드에 전달할 수 있습니다. 입력값의 형식은 계속 boolean이고 반환값은 문자열이므로, 다시 boolean으로 변환하지 않으면 이후의 boolean 조건식에 사용할 수 없습니다.
다음 예제를 실행해 보세요:
public class BooleanStringExample {
public static void main(String[] args) {
boolean active = true;
String text = String.valueOf(active);
System.out.println(text);
}
}
true
이 형식에 false를 전달해도 해당 소문자 문자열이 반환됩니다. 원본 변수가 boolean으로 선언되어 있다면 원시형 오버로드를 사용하세요. 원시형 인수가 필요한 경우 Java는 null이 아닌 Boolean도 언박싱할 수 있습니다. 래퍼 참조가 null일 수 있다면 원시형을 받는 메서드에 전달하기 전에 그 가능성을 처리해야 합니다. null을 언박싱하면 NullPointerException이 발생합니다.
Boolean.toString()으로 Boolean 값을 문자열로 변환
Boolean은 래퍼 클래스이고 boolean은 원시형입니다. null이 아닌 Boolean 객체에서는 인스턴스 메서드 toString()을 호출할 수 있습니다. 이 클래스에는 원시형 값을 바로 받는 정적 오버로드 Boolean.toString(boolean)도 있으므로, 변환만을 위해 래퍼 객체를 만들 필요가 없습니다. 예제에는 두 방식이 모두 나와 있으니 이미 가진 값의 형식에 따라 선택할 수 있습니다. 코드와 출력 블록은 원문 그대로 보존되어 있으므로 Instance, Static, Active 같은 레이블과 화면에 표시되는 결과는 영어입니다.
public class BooleanStringExample {
public static void main(String[] args) {
Boolean enabled = Boolean.FALSE;
String instanceText = enabled.toString();
boolean active = true;
String staticText = Boolean.toString(active);
System.out.println("Instance: " + instanceText);
System.out.println("Static: " + staticText);
}
}
Instance: false
Static: true
인스턴스 메서드를 호출하려면 참조가 null이 아니어야 합니다. enabled가 null이면 enabled.toString()에서 NullPointerException이 발생합니다. 정적 오버로드는 클래스에서 호출하고 원시형 값을 받으므로 래퍼 참조를 역참조하지 않습니다. null일 수 있는 Boolean을 받았다면 인스턴스 메서드를 호출하거나 언박싱하기 전에 null이 어떤 의미인지 정하세요. 예를 들어 참조값을 먼저 확인하고 null일 때 대체 문자열을 제공할 수 있습니다.
연결 연산으로 boolean 또는 Boolean 값을 문자열로 변환
문자열을 만들고 있는 중이라면 Java는 연결 연산에서 원시형 boolean을 소문자 문자열로 변환합니다. null이 아닌 Boolean 래퍼도 해당 값에 맞는 문자열로 변환됩니다. "Enabled: " + enabled처럼 문자열을 앞에 두면 레이블을 읽기 쉽게 만들 수 있습니다. 이 방식은 메시지나 로그에 편리하지만, 값 하나만 변환할 때는 메서드를 명시하는 편이 의도를 더 분명히 전달합니다. 코드와 출력 블록은 변경되지 않아 Enabled, Available 등의 레이블과 표시 결과는 영어 그대로입니다.
public class BooleanStringExample {
public static void main(String[] args) {
boolean active = true;
Boolean enabled = Boolean.FALSE;
System.out.println("Active: " + active);
System.out.println("Enabled: " + enabled);
}
}
Active: true
Enabled: false
null인 Boolean을 연결하면 "null"이라는 문자열이 만들어지며 해당 참조에서 toString()을 호출하지 않습니다. 같은 null 참조에서 enabled.toString()을 호출하면 NullPointerException이 발생하므로 두 동작은 다릅니다. 출력 문자열을 만들 때 이 차이를 기억하세요. 연결은 null을 null이라는 단어로 나타내지만 인스턴스 메서드는 실제 Boolean 값이 있어야 합니다. 사용자에게 보여 주거나 외부 형식으로 전달할 문자열이라면 null이 모호해질 때 명시적인 대체값을 정하세요.
String.format()으로 boolean을 문자열 형식으로 출력
boolean 값이 더 큰 형식의 메시지에 들어가거나 메시지에 여러 값이 포함된다면 String.format()을 사용할 수 있습니다. %b 변환은 Boolean 인수를 소문자 true 또는 false로 형식화합니다. 읽기 쉬운 템플릿을 만들 때 유용하지만, 값 하나만 처리하기에는 서식 지정 과정이 추가됩니다. 이 예제는 형식 문자열과 값을 함께 보여 주어 boolean 값이 들어가는 위치를 분명히 합니다. 코드와 출력 블록은 변경되지 않았으므로 예제의 레이블과 표시 결과는 영어입니다.
public class BooleanStringExample {
public static void main(String[] args) {
boolean available = true;
String message = String.format("Available: %b", available);
System.out.println(message);
}
}
Available: true
간단히 변환할 때는 String.valueOf(boolean) 또는 Boolean.toString(boolean)을 사용하세요. 짧은 레이블에는 연결을, 템플릿이 긴 메시지의 구조를 더 명확하게 해 줄 때는 String.format()을 사용하면 됩니다. 어떤 방식을 선택하든 원본 형식을 고려하세요. 원시형에는 항상 boolean 값이 있지만 Boolean 참조는 null일 수 있습니다.