85 votes

Différence entre le casting vers 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;

141voto

Joachim Sauer Points 133411

La conversion en chaîne de caractères ne fonctionne que lorsque l'objet est en fait une chaîne de caractères :

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

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

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

String.valueOf() cependant, il essaiera de convertir tout ce que vous lui passerez en un fichier String . Il gère les deux primitives ( 42 ) et des objets ( new Integer(42) en utilisant l'objet 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"

Notez en particulier le dernier exemple : passer null a String.valueOf() retournera la chaîne de caractères "null" .

18voto

darijan Points 6139

String.valueOf(foo) invoque foo 's .toString() et affecte le résultat à la méthode bar . Il s'agit d'une opération de sécurité nulle et de type.

Le Casting va juste attribuer foo à la bar si les types correspondent. Sinon, l'expression génère un ClassCastException .

4voto

Les deux génèrent le même sortie en cas de String .

Casting échoue dans le cas où l'objet fourni n'est pas une string.

2voto

tstorms Points 3341

Le casting signifie que l'objet doit être de type String, alors que String.valueOf() peut aussi prendre d'autres types.

2voto

Syamantak Basu Points 310

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

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X