[Android] obj.toString()과 String.valueOf(obj)중에 무엇을 쓸까?
EditText에 입력된 값을 DB에 넣어주기 위해서, Int to String 변환이 필요했다.
알고있는 방법은 두 가지로, toString과 String.valueOf였다. 문득, 현재 프로젝트에서 무엇을 쓰는것이 더 이득일까하는 생각이 들었다.
구글신에 검색하여 toString과 String.valueOf의 차이점에 대해 알아보았다. 간단한 코드와 함께 차이를 설명하겠다.
String str = null;
System.out.println(String.valueOf(str)); // null
System.out.println(str.toString()); // NullPointerException
String타입 변수 str에 null값을 넣어 초기화 해준 후, String변환 메소드 두 가지를 사용하여 출력하는 코드이다. 주석에 표시한 것과 같이 각각 null과 exception을 결과로 내준다. 결국 Null값에 따른 NullPointerException 발생 유무가 두 메소드의 차이점이다.
답이 나왔다. Null값이 들어있을 수 있는 변수에는 String.valueOf()를, 확실한 값이 있는 변수에는 toString()을 쓰면 된다. 지금 진행중인 프로젝트에서는 EditText에 값이 있는지 없는지를 한 번 체크를 해준 후 DB에 넣기 때문에 toString을 쓰면 된다.
하지만 하나 더 궁금한 것이 생겼다. 속도에서 차이가 나지 않을까? 역시 구글신에 검색하여 찾아보았다.
위 블로거의 실험결과, valueOf가 toString보다 약간 더 빠르다고 한다. 자료가 생각보다 찾기힘들고 많지가 않아 위 블로그가 전부인 관계로 정확성에 있어서는 확신이 들지 않는다.
외에도 많은 사람들이 toString보다는 valueOf를 쓰는것을 추천하고 있다.
결론적으로는 String.valueOf()를 사용하는것이 좋을 것 같아 그러기로 했다.