web-dev-qa-db-fra.com

Différence entre la conversion en String et String.valueOf

Quelle est la différence entre

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

et

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

La conversion en chaîne ne fonctionne que lorsque l'objet est réellement une chaîne:

Object reallyAString = "foo";
String str = (String) reallyAString; // works.

Cela ne marchera pas si l'objet est autre chose:

Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException

String.valueOf() essaiera cependant de convertir tout ce que vous y passerez en String. Il gère à la fois les primitives (42) et les objets (new Integer(42), en utilisant le toString() de cet objet):

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"

Notez en particulier le dernier exemple: passer null à String.valueOf() renverra la chaîne "null".

129
Joachim Sauer

String.valueOf(foo) appelle la méthode .toString() de foo et affecte le résultat à la barre. Il est nul et saisissez une opération sécurisée.

Casting ne fera qu'attribuer foo à bar, si les types correspondent. Sinon, l'expression jettera une ClassCastException.

16
darijan

Les deux génère la même sortie dans le cas de String.

Casting échoue si l'objet fourni n'est pas un string.

4
Suresh Atta

La méthode String.valueOf est utilisée pour obtenir la représentation sous forme de chaîne de son objet paramètre. 

(String) value convertit la valeur de l'objet en chaîne.

Vous pouvez utiliser la méthode String.valueOf pour obtenir la représentation sous forme de chaîne d'un objet sans vous soucier des références null. Si vous essayez de convertir String sur une référence null, vous obtiendrez une exception NullPointerException. 

2
Syamantak Basu

Casting signifie que l'objet doit être de type String, alors que String.valueOf() peut également prendre d'autres types.

2
tstorms
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");

Sortie : strCastOfObj is null

1
Zaki

Le premier, i.e, String.valueOf, ne renvoie une chaîne que si l'objet est un type représentable, qui est un type valeur ou une chaîne. Sinon, il lève l'exception. 

Dans ce dernier cas, vous lancez directement le script, ce qui peut échouer si l’objet n’est pas une chaîne.

Exemple en ligne.

http://ideone.com/p7AGh5

dans String.valueOf (); string as work convertit tous les arguments passés dans la méthode valueof (), convertit en String et convertit integer.string () en entier uniquement

0
anuragsingh