Разница между приведением к строке и строке.valueOf
в чем разница между
Object foo = "something";
String bar = String.valueOf(foo);
и
Object foo = "something";
String bar = (String) foo;
8 ответов:
приведение к строке работает только тогда, когда объект на самом деле строку:
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
toString.valueOf()
возвращает строку"null"
.
String.valueOf(foo)
вызывает фу ' s.toString()
метод и присваивает результат к бар. Это null и тип безопасной эксплуатации.кастинг будет просто назначить фу до бар, если типы совпадают. В противном случае выражение будет бросать
ClassCastException
.
как генерировать выход в случае
String
.
Casting
сбой в случае, если предоставленный объект не являетсяstring.
приведение означает, что объект должен иметь тип String, в то время как
String.valueOf()
может принимать и другие типы.
строку.метод valueOf используется для получения строкового представления объекта, его параметр.
(String) значение приводит значение объекта к строке.
вы можете использовать строку.valueOf метод, чтобы получить строковое представление объекта, не беспокоясь о пустых ссылках. Если вы попытаетесь привести строку к нулевой ссылке, вы получите исключение 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
возвращает строку, только если объект является представимым тип, который является типом значения или строки.. Иначе он выбрасывает исключение.в последнем случае вы непосредственно выполняете приведение, которое может завершиться неудачей, если объект не является строкой.
онлайн пример.