2013-09-21 3 views
0

이 두 코드의 차이 무엇입니까 :차이는()

Object object = anything; 
String str = object+""; 

Object object = anything; 
String str = object.toString(); 

(객체가 어떤 임의의 객체 인) 그들은 둘을 반환 same String.

성능은 어떻게됩니까? 어느 것이 더 낫습니까? 제 단지 일반 toString() 호 반면

Object object = anything; 
String str = new StringBuilder().append(object).toString(); 

:

답변

4

당신이 javap -c를 사용하여이 예제를 컴파일하는 경우는 첫 번째 경우에

  • StringBuilder
  • 생성됩니다 것을 볼 수 있으며 append(Object obj)
  • 하는 내부 append(String.valueOf(obj));
  • 어떤 먼저 확인합니다 호출합니다 것입니다 null을 참조하십시오. null

    Object o = null; 
    System.out.println(o + ""); // result "null" 
    System.out.println(o.toString()); // throws NPE 
    

    의 결과에

그래서 큰 차이점은 데이터가 null 할 수없는 경우 또는 당신은 당신이 더 나은 성능을 위해 toString()를 사용해야합니다 NPE 던져합니다.

데이터가 null 될 수 있으면이 경우 결과 문자열에

"null" String.valueOf(object)object+""보다 더 나은 성능을 제공 할 수 있어야합니다.

2

첫번째는 동일하다. 성능 차이는 무시할 수 있지만 두 번째는 불필요한 StringBuilder을 사용하지 않기 때문에 거의 확실하게 빠를 것입니다. 일반적으로 두 번째 방법을 선호합니다.