Java에서 사용하고 있는 String.valueOf()와 toString()은 객체를 문자열로 변환하는 데 사용되지만 약간의 차이가 있습니다.
각각의 특징과 차이를 알아보겠습니다. 😺
String.valueOf()
String.valueOf() 메서드는 다양한 타입(기본 타입과 객체 모두)을 받아서 이를 문자열로 변환합니다.
이 메서드는 null 처리를 포함한 안전한 변환을 제공합니다.

- null 안전
String.valueOf()는 인자로 전달된 객체가 null일 경우 "null"이라는 문자열을 반환합니다. - 다양한 타입 지원
boolean, char, int, long, float, double 등의 기본 타입과 객체 타입을 처리할 수 있습니다.
Object obj1 = null;
System.out.println(String.valueOf(obj1)); // "null" 출력
Object obj2 = 123;
System.out.println(String.valueOf(obj2)); // "123" 출력
toString()
toString() 메서드는 모든 객체가 기본적으로 가지고 있는 메서드로 객체의 문자열 표현을 반환합니다.
모든 클래스는 Object 클래스를 상속받기 때문에 toString() 메서드를 사용 가능합니다.
- null 참조 시 예외 발생
toString() 메서드는 객체가 null이면 NullPointerException을 발생시킵니다. - 재정의 가능
클래스에서 toString() 메서드를 오버라이딩하여 원하는 문자열 표현을 반환할 수 있습니다.
Object obj1 = null;
System.out.println(obj1.toString()); // NullPointerException 발생
Object obj2 = 123;
System.out.println(obj2.toString()); // "123" 출력
String.valueOf()와 toString() 차이점
- null 처리
- String.valueOf(null)은 "null"이라는 문자열을 반환합니다.
- null.toString()은 NullPointerException을 발생시킵니다.
- 다양한 타입 지원
- String.valueOf()는 기본 타입과 객체 타입 모두에 대해 사용할 수 있습니다.
- toString()은 오직 객체에 대해 사용할 수 있으며, 기본 타입의 경우 자동으로 박싱된 객체의 toString()이 호출됩니다.
- 재정의
- toString()은 클래스마다 재정의될 수 있습니다. 재정의된 경우, 해당 객체에 맞는 문자열 표현을 반환합니다.
- String.valueOf()는 단순히 toString() 메서드를 호출하는 방식이므로 재정의된 toString()이 존재하면 그것을 사용합니다.
💡 String.valueOf() 는 null-safe 하고 다양한 타입을 지원하므로 안전하게 문자열로 변환할 수 있습니다.
toString()은 객체가 null일 경우 예외를 발생시키지만 클래스에 따라 재정의할 수 있는 유연함이 있습니다.
사용 시점에 따라 적절한 메서드를 선택하는 것이 중요합니다. 예를 들어, null 처리가 필요하다면 String.valueOf()가 더 안전합니다.
'Backend > Java' 카테고리의 다른 글
| [Java] Optional 한눈에 정리하기 (0) | 2024.11.19 |
|---|---|
| [Java] @SuperBuilder란? (0) | 2024.10.17 |
| [Java] 직렬화(Serialization) (1) | 2024.09.17 |
| [Java] 람다 표현식(Lambda Expressions) (0) | 2024.09.16 |
| [Java] 상속(Inheritance)보다는 컴포지션(Composition) (0) | 2024.08.24 |