# String 타입 캐스팅과 String.valueOf() 차이

  • 두 방식 모두 String 타입으로 타입으로 변환하는 것은 같지만, 동작 방식과 예외 처리에서 차이가 있음

# String 타입 캐스팅

Object intValue = 10;
String str1 = (String) intValue; // ClassCastException

Object nullValue = null;
String str2 = (String) nullValue; // null
str2.concat("maeilmail"); // NullPointerException
  • value가 String 타입이 아니면 ClassCastException 발생
  • value가 null인 경우 null을 반환하기 때문에 사용 시 NPE가 발생할 수 있음

# String.valueOf()

Object intValue = 10;
String str1 = String.valueOf(intValue); // "10"

Object nullValue = null;
String str2 = String.valueOf(nullValue); // "null"
str2.concat("maeilmail"); // "nullmaeilmail"
  • value가 String 타입이 아니면 value.toString() 호출 후 String으로 변환
  • value가 null인 경우 "null" 문자열을 반환