1. String.valueOf()
String.valueOf() 메소드를 사용하면 어떠한 값이 들어와도 String 타입으로 형변환이 가능하다. 메소드를 살펴보면 파라미터로 null 값이 넘어오면 null을 반환하므로 NPE가 발생하지 않는다.
// 예시 코드
public class Main {
public static void main(String[] args) {
Object strObject = "string";
Object intObject = 1;
Object nullObject = null;
System.out.println(String.valueOf(strObject)); // string
System.out.println(String.valueOf(intObject)); // 1
System.out.println(String.valueOf(nullObject)); // null
}
}
2. toString()
toString() 메소드를 사용하면 null 값을 제외하고 모두 String으로 변환이 가능하다. null에는 연결된 객체가 없으므로 NPE가 발생한다.
public class Main {
public static void main(String[] args) {
Object strObject = "string";
Object intObject = 1;
Object nullObject = null;
System.out.println(strObject.toString()); // string
System.out.println(intObject.toString()); // 1
System.out.println(nullObject.toString()); // NPE
}
}
3. (String)
null 값을 다른 참조 타입으로 캐스팅하는 것은 허용되므로 NPE가 발생하지 않는다. 하지만 Object에 int 값을 넣으면 자동으로 Integer 객체로 오토 박싱되고, Integer 객체를 String으로 직접 형변환하는 것이기 때문에 ClassCastException이 발생한다.
public class Main {
public static void main(String[] args) {
Object strObject = "string";
Object intObject = 1;
Object nullObject = null;
System.out.println((String) strObject); // string
System.out.println((String) intObject); // ClassCastException
System.out.println((String) nullObject); // null
}
}
'Programming > Java' 카테고리의 다른 글
[Java] Stream.toList() vs Collectors.toList() (1) | 2024.05.01 |
---|