Development/JAVA
[Java] toString() vs valueOf() 차이
luminous13
2022. 5. 31. 15:28
안녕하세요 luminous13입니다. 오늘은 toString()과 valueOf()의 차이점에 대해 알아보겠습니다.
코드를 짜다보면 다른 타입에서 문자열로 형변환해야될 상황이 있습니다.
예를들어 int에서 문자열로 형변환을 하고 싶을 때 우리는 아래의 코드와 같이 2가지 방법을 사용할 수 있습니다.
public static void main(String[] args) {
int num = 123;
String str1 = Integer.toString(num);
String str2 = String.valueOf(num);
System.out.println("String() 이용: " + str1); // "123"
System.out.println("valueOf() 이용: " + str2);// "123"
}
두 방법 모두 숫자를 입력으로 받아 문자열을 반환합니다. 그럼 무슨 차이가 있는걸까요?
두 방법의 차이는 입력받은 객체가 null일 때 차이가 있습니다.
toString(Object ob)
toString의 경우 입력으로 null을 받은경우 아래의 예시처럼 NullPointException을 발생시킵니다.
예시코드
public static void main(String[] args) {
Object obj = null;
System.out.println(obj.toString()); // NullPointException
}
valueOf(Object obj)
반면 valueOf의 경우 null을 입력받은 경우 "null" 문자열을 반환합니다. 그 외에는 toString() 반환값을 리턴합니다. 다시말해서 toString()을 한번 감싼 메서드라고 보면 됩니다. 실제로 구현 코드를 보면 아래와 같이 toString()을 호출합니다.
예시코드
public static void main(String[] args) {
Object obj = null;
System.out.println(String.valueOf(obj)); // "null"
}
구현코드
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
참고
https://stackoverflow.com/questions/27465731/string-valueof-vs-object-tostring
String.valueOf() vs. Object.toString()
In Java, is there any difference between String.valueOf(Object) and Object.toString()? Is there a specific code convention for these?
stackoverflow.com