반응형
toString(), String.valueOf() 두 메소드 모두 오브젝트 값을 String으로 변환
하지만 변경하고자 하는 오브젝트가 null인경우 결과 값이 다름
String.valuOf() - 문자열 null 반환
vauleof() -> NPE 오류 발생, 오브젝트에 담긴 값이 String이 아니여도 출력
두 메소드의 차이는 null값에 따른 NPE 발생 유무
이런 차이점으로 valueOf()의 null 체크 방법은 "null".equals(string)형태로 체크 해야 한다.
destItemMap.get("LOWER_VAL") 이 null 일 경우
String lowerCoatingVal1 = String.valueOf(destItemMap.get("LOWER_VAL"));
String lowerCoatingVal2 = destItemMap.get("LOWER_VAL").toString();
lowerCoatingVal1 = "null"
lowerCoatingVal2 = NullPointerException 발생
String.valueOf()의 null 체크
String lowerCoatingVal1 = String.valueOf(destItemMap.get("LOWER_VAL"));
if("null".equals(lowerCoatingVal1)) {
// To do Somting....
}
// equals함수를 사용할때 왼쪽에 있는 것을 기준으로 비교하기 때문에 변수보다는
// 문자열을 왼쪽에 두는 것을 추천한다.
// 즉 strTestVal이 null인 경우 ret = "1"인 if문은 NPE를 발생시킨다.
String strTestVal = null;
String ret = "";
/* Exception 발생 */
if( !(strTestVal .equals("")) ) ret = "1";
/* 정상 */
if( !("".equals(strTestVal)) ) ret = "2";
null로 인해 발생된 에러는 시간이 지나고, 타인의 소스인경우 디버깅하기 어렵고 어떤의미를 내포하고 있는지 판단하기 어렵다.
때문에 NPE를 방지하기 위해 toString보다는 valueOf를 사용하는 것을 추천한다.
출처 : https://swjeong.tistory.com/146
반응형
'프로그래밍 > Java' 카테고리의 다른 글
ArrayList_Clear, new 차이점 (0) | 2021.06.11 |
---|---|
ArrayList, LinkedList 속도 비교 (0) | 2021.06.11 |
자바 - 오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2021.06.02 |
자바 배열을 복사하는 방법 (깊은 복사, 얕은 복사) (0) | 2021.05.31 |
Character.메소드 대소문자, 숫자 확인, 변환 메소드, isAlphabetic (0) | 2021.05.28 |