Backend/Java

[Java] String.valueOf()와 toString() 차이점

누구세연 2024. 10. 14. 23:50

Java에서 사용하고 있는 String.valueOf()와 toString()은 객체를 문자열로 변환하는 데 사용되지만 약간의 차이가 있습니다.

각각의 특징과 차이를 알아보겠습니다. 😺

 

String.valueOf()

String.valueOf() 메서드는 다양한 타입(기본 타입과 객체 모두)을 받아서 이를 문자열로 변환합니다.

이 메서드는 null 처리를 포함한 안전한 변환을 제공합니다.

valueOf

  • 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()가 더 안전합니다.