Qual é a diferença entre
Object foo = "something";
String bar = String.valueOf(foo);
e
Object foo = "something";
String bar = (String) foo;
Respostas:
A conversão para string só funciona quando o objeto é realmente uma string:
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
Não funcionará quando o objeto for outra coisa:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
String.valueOf()no entanto, tentará converter tudo o que você passar para um String. Ele lida com primitivos ( 42) e objetos ( new Integer(42), usando aquele objeto 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"
Observe especialmente o último exemplo: passar nullpara String.valueOf()retornará a string "null".
String.valueOf()e obj.toString()? (O primeiro que me vem à mente é que obj.toString()passará por uma exceção se objfor nulo.)
null. Se você observar a implementação de String.valueOf()em seu JDK, verá que tudo o que ele faz para referências não nulas é chamar toString().
str = String.valueOf(null)no Java 7 Update 80, ele lança um NullPointerException.
String.valueOf((Object) null)retornará a String "null". Chamá-lo com um literal nullirá chamar String # valueOf (char []) que realmente lança um NPE quando você passa null.
String.valueOf(foo)invoca o método foo.toString() e atribui o resultado à barra . É uma operação nula e segura.
Casting irá apenas atribuir foo à barra , se os tipos forem correspondentes. Caso contrário, a expressão lançará um ClassCastException.
String.valueOf(Object)invocaObject.toString()
Ambos geram a mesma saída no caso de String.
Casting falha no caso de o objeto fornecido não ser um string.
Casting significa que o objeto precisa ser do tipo String, embora String.valueOf()possa assumir outros tipos também.
O método String.valueOf é usado para obter a representação String de seu objeto de parâmetro.
(String) valor converte o valor do objeto em string.
Você pode usar o método String.valueOf para obter a representação String de um objeto sem se preocupar com referências nulas. Se você tentar lançar String em uma referência nula, obterá uma NullPointerException.
O primeiro, isto é, String.valueOfretorna uma string somente se o objeto for um tipo representável que é um tipo de valor ou uma String. Caso contrário, ele lança a exceção.
No último, você está lançando diretamente, o que pode falhar se o objeto não for uma string.
Exemplo online.
em String.valueOf (); string como trabalho typecasting de todos os argumentos passados no método valueof () converter em String e assim como integer.string () converter inteiro em string apenas