Javadocs

[Java] toString()과 String.valueOf() 비교 및 차이점 본문

Programming/Java

[Java] toString()과 String.valueOf() 비교 및 차이점

Javatist 2023. 4. 1. 20:40

toString()String.valueOf()Object 값을 String 형으로 변환할 때 주로 사용하는 메소드.
두 메소드는 String의 형태로 값을 변환해주는 비슷한 점이 있지만, 변경하고자 하는 값이 null이라면 차이가 있습니다. 

두 메소드의 차이점은 바로 null값에 따른 NullPointerException의 발생 유무입니다. 
넘어오는 Object의 값이 null일 때 toString()과 String.valueOf()의 비교 

  • toString() : null 값을 형 변환 시 NullPointerException(NPE)이 발생 / Object의 값이 String이 아니여도 출력.
  • String.valueOf() : 파라미터로 null이 오면 "null"이라는 문자열로 출력
public class Practice {
	public static void main(String[] args) {
		
		Object obj = null;
		
		System.out.println(String.valueOf(obj));
		System.out.println(valueOfCheck(obj));
		
		System.out.println("--------------");
		
		System.out.println(obj.toString());
	}
	static String valueOfCheck(Object obj) {
		return obj == null ? "javadocs.tistory.com" : String.valueOf(obj);
	}
}

위와 같이 toString()은 null값을 형변환 하면 NPE가 발생하기 때문에,
NPE를 방지할 수 있는 String.valueOf()를 사용하는 것이 좋다. 

* String.valueOf() 사용 시 "null"에서 다른 문자열로 바꾸고 싶다면 위와 같이 메소드를 정의해서 사용.

Comments