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 null
para 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 obj
for 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 null
irá 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.valueOf
retorna 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