Разница между приведением к строке и строке.valueOf


в чем разница между

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

и

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

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 to String.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 возвращает строку, только если объект является представимым тип, который является типом значения или строки.. Иначе он выбрасывает исключение.

в последнем случае вы непосредственно выполняете приведение, которое может завершиться неудачей, если объект не является строкой.

онлайн пример.

http://ideone.com/p7AGh5

в строку.valueOf (); string как работа typecasting все аргументы, переданные в valueof () метод преобразования в строку и так же, как целое число.string () преобразовать целое число в строку только