[Java] toString()과 valueOf()의 차이점

Q1. 형 변환이란

해당 변수의 타입을 다른 타입으로 변환하는 것이다.
자바에서는 2가지의 형 변환이 있는데, 

int num = 100;
String str1 = num;  //숫자를 문자타입으로 대입하는 경우 '묵시적 (자동) 형 변환' 
String str2 = (String) num; // (String)라는 타입을 지정하는 '명시적 (강제) 형 변환' 

묵시적 형 변환이 적용되는 경우가 그렇게 많지가 않았고, 되려 명시적을 사용하는 경우는 많이 있었다.
제목과 같이 toString과 valueOf는 또 다른 명시적 형 변환 방법이라고 보면 된다. 
 
위 두 기능을 아래와 같은 표로 정리를 하였다.

 

Q2. 결론적으로

개발자라면 가장 많이 접하는 nullPointException 에러를 유발하는 주 요인이다.
확실하지 않은 경우에는 toString대신 valueOf를 이용하거나, if조건절을 이용한 null체크를 해야 한다.