Arasındaki fark nedir
Object foo = "something";
String bar = String.valueOf(foo);
ve
Object foo = "something";
String bar = (String) foo;
Yanıtlar:
Dizeye çevrim, yalnızca nesne aslında bir dizge olduğunda çalışır :
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
Nesne başka bir şey olduğunda işe yaramaz:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
String.valueOf()
ancak, ona ne iletirseniz onu bir String
. Hem ilkelleri ( 42
) hem de nesneleri ( new Integer(42)
bu nesneyi kullanarak ) işler 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"
Geçen: özellikle son örneği Not null
için String.valueOf()
dize döndürür "null"
.
String.valueOf()
ve aramak arasında önemli bir fark var obj.toString()
mı? (Aklıma gelen ilk şey, obj.toString()
eğer boşsa bir istisna yoluyla olacaktır obj
.)
null
. String.valueOf()
JDK'nızdaki uygulamasına bakarsanız, boş olmayan referanslar için yaptığı tek şeyin aramak olduğunu göreceksiniz toString()
.
str = String.valueOf(null)
Güncelleme 80 Java 7, bir atar NullPointerException
.
String.valueOf((Object) null)
"null" dizesini döndürür. Onu bir değişmez null
değerle çağırmak, siz geçtiğinizde aslında bir NPE atan String # valueOf (char []) 'ı çağırır null
.
String.valueOf(foo)
başlatır foo 'in .toString()
yöntemi ve tayin için sonuç çubuğu . Boş ve tip güvenli işlemdir.
Will sadece atama Döküm foo için bara tipleri eşleştirme ise,. Aksi takdirde, ifade bir ClassCastException
.
String.valueOf(Object)
çağırırObject.toString()
Her ikisi de olması durumunda aynı çıktıyı üretir String
.
Casting
sağlanan nesne bir Değilse başarısız olur string.
String.valueOf yöntemi, parametre nesnesinin String temsilini almak için kullanılır.
(Dize) değeri, nesne değerini dizeye çevirir.
Boş başvurular hakkında endişelenmeden bir nesnenin String temsilini almak için String.valueOf yöntemini kullanabilirsiniz. String'i boş bir referansa dönüştürmeye çalışırsanız, bir NullPointerException alırsınız.
İlki ie, String.valueOf
yalnızca nesne bir değer türü veya Dize olan temsil edilebilir bir türse bir dizge döndürür .. Aksi takdirde istisnayı atar.
İkincisinde, nesne bir dizge değilse, başarısız olabilecek doğrudan çevrim yapıyorsunuz.
Çevrimiçi örnek.
String.valueOf (); çalışma türü olarak dize, valueof () yönteminde iletilen tüm argümanları String'e dönüştürür ve tıpkı integer.string () gibi, tamsayıyı yalnızca dizeye dönüştürür