차이점은 무엇입니까
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 및 형식 안전 작업입니다.
유형이 일치하면 캐스팅은 foo 를 bar에 할당합니다 . 그렇지 않으면 표현식에서 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
객체가 값 유형 또는 문자열 인 표현 가능한 유형 인 경우에만 문자열을 반환합니다. 그렇지 않으면 예외가 발생합니다.
후자의 경우 객체가 문자열이 아니면 실패 할 수있는 직접 캐스팅합니다.
온라인 예.