차이점은 무엇입니까
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()것과 obj.toString()? (내 마음에 가장 먼저 떠오르는 것은 null obj.toString()인 경우 예외를 통과 한다는 것 obj입니다.)
null. String.valueOf()JDK 의 구현을 살펴보면 null이 아닌 참조에 대해 수행하는 모든 작업이를 호출하는 것임을 알 수 있습니다 toString().
str = String.valueOf(null)Java 7 업데이트 80에서 시도한 결과 NullPointerException.
String.valueOf((Object) null)문자열 "null"을 반환합니다. 리터럴 null로 호출하면 String # valueOf (char [])가 호출되어 null.
첫 번째는 즉, String.valueOf객체가 값 유형 또는 문자열 인 표현 가능한 유형 인 경우에만 문자열을 반환합니다. 그렇지 않으면 예외가 발생합니다.
후자의 경우 객체가 문자열이 아니면 실패 할 수있는 직접 캐스팅합니다.
온라인 예.
String.valueOf ();에서 작업 typecasting으로 문자열 valueof () 메서드에 전달 된 모든 인수는 문자열로 변환되고 integer.string ()과 마찬가지로 정수를 문자열로만 변환합니다.