Quelle est la différence entre
Object foo = "something";
String bar = String.valueOf(foo);
et
Object foo = "something";
String bar = (String) foo;
Quelle est la différence entre
Object foo = "something";
String bar = String.valueOf(foo);
et
Object foo = "something";
String bar = (String) foo;
Réponses:
La conversion en chaîne ne fonctionne que lorsque l'objet est en fait une chaîne:
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
Cela ne fonctionnera pas lorsque l'objet est autre chose:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
String.valueOf()
cependant essaiera de convertir tout ce que vous y passez en un fichier String
. Il gère à la fois les primitives ( 42
) et les objets ( new Integer(42)
, en utilisant cet 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
à String.valueOf()
retournera la chaîne "null"
.
String.valueOf()
et obj.toString()
? (Le premier qui me vient à l'esprit est que obj.toString()
, grâce à une exception, si obj
est nul.)
null
. Si vous regardez l'implémentation de String.valueOf()
dans votre JDK, vous verrez que tout ce qu'il fait pour les références non nulles est d'appeler toString()
.
String.valueOf()
c'était plus élégant qu'un casting. Mais si String.valueOf()
tout ce que fait le casting, et plus, y a-t-il des raisons pour lesquelles on choisirait d'utiliser un casting? Pourquoi n'a-t-il pas été abandonné?
String.valueOf((Object) null)
renverra la chaîne "null". L'appeler avec un littéral null
appellera String # valueOf (char []) qui jette en fait un NPE lorsque vous passez null
.
String.valueOf(foo)
invoque la méthode de foo.toString()
et affecte le résultat à la barre . Il s'agit d'une opération sûre de type null.
La diffusion affectera simplement foo à la barre , si les types correspondent. Sinon, l'expression lancera un ClassCastException
.
String.valueOf(Object)
invoqueObject.toString()
Les deux génèrent la même sortie en cas de String
.
Casting
échoue si l'objet fourni n'est pas un string.
La méthode String.valueOf est utilisée pour obtenir la représentation String de son objet paramètre.
La valeur (String) convertit la valeur de l'objet en chaîne.
Vous pouvez utiliser la méthode String.valueOf pour obtenir la représentation String d'un objet sans vous soucier des références nulles. Si vous essayez de convertir String sur une référence nulle, vous obtiendrez une NullPointerException.
Le premier c'est-à-dire, String.valueOf
renvoie une chaîne uniquement 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, vous effectuez directement un casting qui peut échouer si l'objet n'est pas une chaîne.
Exemple en ligne.
dans String.valueOf (); string as work transtypage de tous les arguments passés dans la méthode valueof () convertis en String et tout comme integer.string () convertit un entier en chaîne uniquement