Разница между литьем в String и String.valueOf

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

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

и

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

Ответ 1

Листинг в строке работает только тогда, когда объект фактически является строкой:

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".

Ответ 2

String.valueOf(foo) вызывает метод foo .toString(), создает из него String и назначает его панели .

Casting просто назначит foo для строки , так как типы соответствуют. В противном случае выражение будет вызывать ClassCastException.

Ответ 3

Кастинг означает, что объект должен иметь тип String, а String.valueOf() может принимать и другие типы.

Ответ 4

Оба генерируют один и тот же вывод в случае String.

Casting терпит неудачу, если предоставленный объект не является string.

Ответ 5

Метод String.valueOf используется для получения репрезентации String этого объекта параметра.

(String) значение передает значение объекта в строку.

Вы можете использовать метод String.valueOf для получения строкового представления объекта, не беспокоясь о нулевых ссылках. Если вы попытаетесь наложить String на нулевую ссылку, вы получите исключение NullPointerException.

Ответ 6

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

Ответ 7

Первый, т.е. String.valueOf возвращает строку только в том случае, если объект является представляемым типом, который является типом значения или строкой. Иначе он выдает исключение.

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

Пример в Интернете.

http://ideone.com/p7AGh5

Ответ 8

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