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

김머랭·2023년 12월 24일

Java

목록 보기
1/5
post-thumbnail

두 메소드의 차이점은 null값에 따른 NPE(NullPointException) 발생의 유무입니다.

toString()

객체를 문자열로 변환합니다. 대부분의 클래스에서 이 메서드를 오버라이드하여 해당 객체의 문자열 표현을 반환합니다.

  • 대상 값이 null이면 NPE(NullPointException)를 발생시키고, Object에 담긴 값이 String이 아니여도 출력합니다.

String.valueOf()

여러 가지 데이터 타입을 문자열로 변환합니다. 이 메서드는 인자로 전달된 객체의 toString() 메서드를 내부적으로 호출하여 문자열로 변환합니다.

  • 대상 값이 null이면 문자열 "null"을 만들어서 반환합니다.

따라서 NPE를 방지하기 위해서는 입력이 null인 경우에도 안전하게 문자열로 변환해야 할 때 String.valueOf()를 사용하는 것이 좋습니다.

  • String.valueOf() 내부에서는 toString()을 호출하기 전에 null 체크를 수행합니다. 즉, 객체가 null인 경우 명시적으로 "null" 문자열을 반환하기 때문에 NPE가 발생하지 않습니다. 이는 String.valueOf() 메서드에서 null 객체에 대한 예외 처리를 수행하기 때문입니다.

하지만 toString()은 해당 객체의 문자열 표현을 반환하므로, null 체크를 해주어야 합니다.

profile
"어?~" 왜 안돌아가지.. "어?~" 왜 돌아가지..

0개의 댓글