Apa perbedaan antara
Object foo = "something";
String bar = String.valueOf(foo);
dan
Object foo = "something";
String bar = (String) foo;
Casting untuk string hanya bekerja ketika objek sebenarnya string:
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
Itu tidak't bekerja ketika objek adalah sesuatu yang lain:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
String.valueOf()
namun akan mencoba untuk mengubah apa pun anda masuk ke ke String
. Menangani kedua primitif (42
) dan benda (new Integer(42)
, menggunakan objek yang's 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"
Terutama perhatikan contoh terakhir: lewat null
untuk String.valueOf()
akan mengembalikan string "null"
.
String.valueOf(foo)
memanggil foo's .toString()
metode dan memberikan hasilnya ke bar. Itu adalah batal dan jenis operasi yang aman.
Casting hanya akan menetapkan foo ke bar, jika jenis pencocokan. Jika tidak, ekspresi akan membuang ClassCastException
.
Kedua menghasilkan yang sama output dalam kasus String
.
Casting
gagal dalam kasus yang ditawarkan objek Bukan string.
String.valueOf metode ini digunakan untuk mendapatkan String gambaran dari itu's parameter objek.
(String) nilai melemparkan objek nilai string.
Anda dapat menggunakan String.valueOf metode untuk mendapatkan representasi String dari suatu objek tanpa khawatir tentang null referensi. Jika anda mencoba untuk melemparkan Tali di null referensi anda akan mendapatkan NullPointerException.
akhir Objek obj = null; akhir String strValOfObj = String.valueOf(obj); akhir String strCastOfObj = (String) obj; jika (strValOfObj == null) System.keluar.println("strValOfObj null"); jika (strCastOfObj == null) System.keluar.println("strCastOfObj null");
Output: strCastOfObj null
Yang pertama saya.e, String.valueOf
mengembalikan sebuah string hanya jika objek yang direpresentasikan jenis yang merupakan jenis nilai atau String.. yang Lain itu melempar pengecualian.
Di yang terakhir, anda langsung pengecoran yang dapat gagal jika objek isn't string.
Online contoh.