Was ist der Unterschied zwischen
Object foo = "something";
String bar = String.valueOf(foo);
und
Object foo = "something";
String bar = (String) foo;
Was ist der Unterschied zwischen
Object foo = "something";
String bar = String.valueOf(foo);
und
Object foo = "something";
String bar = (String) foo;
Antworten:
Das Umwandeln in einen String funktioniert nur, wenn das Objekt tatsächlich ein String ist:
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
Es wird nicht funktionieren, wenn das Objekt etwas anderes ist:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
String.valueOf()
Es wird jedoch versucht, alles, was Sie übergeben, in a umzuwandeln String
. Es behandelt sowohl Grundelemente ( 42
) als auch Objekte ( new Integer(42)
unter Verwendung dieses Objekts 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"
Beachten Sie insbesondere das letzte Beispiel: Wenn Sie null
an übergeben , String.valueOf()
wird die Zeichenfolge zurückgegeben "null"
.
String.valueOf()
und obj.toString()
? (Der erste, der mir in den Sinn kommt, ist, dass obj.toString()
durch eine Ausnahme, wenn obj
null ist.)
null
. Wenn Sie sich die Implementierung String.valueOf()
in Ihrem JDK ansehen, werden Sie feststellen, dass für Nicht-Null-Referenzen nur ein Aufruf erforderlich ist toString()
.
String.valueOf()
es immer eleganter als eine Besetzung. Aber wenn String.valueOf()
alles, was das Casting tut, und noch mehr, gibt es Gründe, warum man sich für ein Casting entscheiden würde? Warum wurde es nicht veraltet?
String.valueOf((Object) null)
gibt den String "null" zurück. null
Wenn Sie es mit einem Literal aufrufen, wird String # valueOf (char []) aufgerufen, der beim Übergeben tatsächlich eine NPE auslöst null
.
String.valueOf(foo)
Invokes foo ‚s .toString()
Verfahren und weist das Ergebnis auf die die bar . Es ist null und typsicher.
Beim Casting wird der Leiste nur foo zugewiesen , wenn die Typen übereinstimmen. Andernfalls wird der Ausdruck a auslösen .ClassCastException
String.valueOf(Object)
ruftObject.toString()
Beide erzeugen im Fall von die gleiche AusgabeString
.
Casting
schlägt fehl, wenn das angegebene Objekt nicht a ist string.
Die String.valueOf-Methode wird verwendet, um die String-Darstellung des Parameterobjekts abzurufen.
Der Wert (String) wandelt den Objektwert in einen String um.
Sie können die String.valueOf-Methode verwenden, um die String-Darstellung eines Objekts abzurufen, ohne sich um Nullreferenzen kümmern zu müssen. Wenn Sie versuchen, String in eine Nullreferenz umzuwandeln, erhalten Sie eine NullPointerException.
Die erste, dh, String.valueOf
gibt nur dann eine Zeichenfolge zurück, wenn das Objekt ein darstellbarer Typ ist, der ein Werttyp oder eine Zeichenfolge ist. Andernfalls wird die Ausnahme ausgelöst.
In letzterem Fall werden Sie direkt umgewandelt, was fehlschlagen kann, wenn das Objekt keine Zeichenfolge ist.
Online-Beispiel.
in String.valueOf (); string as work typecasting alle Argumente, die in der Methode valueof () übergeben wurden, konvertieren in String und konvertieren genau wie integer.string () Integer nur in String