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".
@AdamStelmaszczyk: Duvido que haja algo relevante. Talvez a conversão seja um pouco mais rápida, mas as outras diferenças (manipulação de nulos, capacidade de manipular outros tipos) são apenas significativamente mais importantes do que qualquer pequena diferença de desempenho que possa haver.
Joachim Sauer
4
Para levar essa questão um pouco mais longe, há alguma diferença significativa entre pagar String.valueOf()e obj.toString()? (O primeiro que me vem à mente é que obj.toString()passará por uma exceção se objfor nulo.)
Kevin
3
@Kevin: para tipos de referência (também conhecidos como "objetos") a única diferença é o que acontece com 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().
Joachim Sauer
1
Testado str = String.valueOf(null)no Java 7 Update 80, ele lança um NullPointerException.
prata
1
@silver: De fato, simplifiquei demais. 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.
Joachim Sauer
19
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.
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.
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");
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.
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
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 umString
. Ele lida com primitivos (42
) e objetos (new Integer(42)
, usando aquele objetotoString()
):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
paraString.valueOf()
retornará a string"null"
.fonte
String.valueOf()
eobj.toString()
? (O primeiro que me vem à mente é queobj.toString()
passará por uma exceção seobj
for nulo.)null
. Se você observar a implementação deString.valueOf()
em seu JDK, verá que tudo o que ele faz para referências não nulas é chamartoString()
.str = String.valueOf(null)
no Java 7 Update 80, ele lança umNullPointerException
.String.valueOf((Object) null)
retornará a String "null". Chamá-lo com um literalnull
irá chamar String # valueOf (char []) que realmente lança um NPE quando você passanull
.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
.fonte
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 umstring.
fonte
Casting significa que o objeto precisa ser do tipo String, embora
String.valueOf()
possa assumir outros tipos também.fonte
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.
fonte
Produto :
strCastOfObj is null
fonte
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.
http://ideone.com/p7AGh5
fonte
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
fonte