[java] String과 String.valueOf 로의 캐스팅의 차이점

차이점은 무엇입니까

Object foo = "something";
String bar = String.valueOf(foo);

Object foo = "something";
String bar = (String) foo;



답변

문자열로 캐스팅하는 것은 객체가 실제로 문자열 인 경우에만 작동 합니다.

Object reallyAString = "foo";
String str = (String) reallyAString; // works.

개체가 다른 경우 작동하지 않습니다.

Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException

String.valueOf()그러나 전달하는 모든 것을 String. 기본 요소 ( 42)와 객체 ( new Integer(42), 해당 객체의 toString())를 모두 처리합니다 .

String str;
str = String.valueOf(new Integer(42)); // str will hold "42"
str = String.valueOf("foo"); // str will hold "foo"
Object nullValue = null;
str = String.valueOf(nullValue); // str will hold "null"

통과 : 특히 마지막 예를 참고 null하는 String.valueOf()문자열을 반환됩니다 "null".


답변

String.valueOf(foo)foo.toString()메서드를 호출 하고 결과를 막대에 할당합니다 . null 및 형식 안전 작업입니다.

유형이 일치하면 캐스팅은 foobar에 할당합니다 . 그렇지 않으면 표현식에서 ClassCastException.


답변

두 경우 모두 동일한 출력 을 생성 String합니다.

Casting 제공된 객체가 아닌 경우 실패 string.


답변

캐스팅은 객체가 문자열 유형이어야하며 String.valueOf()다른 유형도 사용할 수 있음을 의미합니다 .


답변

String.valueOf 메서드는 매개 변수 개체의 문자열 표현을 가져 오는 데 사용됩니다.

(문자열) 값은 객체 값을 문자열로 캐스트합니다.

String.valueOf 메서드를 사용하여 null 참조에 대한 걱정없이 개체의 문자열 표현을 가져올 수 있습니다. null 참조에서 String을 캐스팅하려고하면 NullPointerException이 발생합니다.


답변

final Object obj = null;
final String strValOfObj = String.valueOf(obj);
final String strCastOfObj = (String) obj;
if (strValOfObj == null) System.out.println("strValOfObj is null");
if (strCastOfObj == null) System.out.println("strCastOfObj is null");

출력 :strCastOfObj is null


답변

첫 번째는 즉, String.valueOf객체가 값 유형 또는 문자열 인 표현 가능한 유형 인 경우에만 문자열을 반환합니다. 그렇지 않으면 예외가 발생합니다.

후자의 경우 객체가 문자열이 아니면 실패 할 수있는 직접 캐스팅합니다.

온라인 예.

http://ideone.com/p7AGh5