[英]Difference between casting to String and String.valueOf
之間有什么區別
Object foo = "something";
String bar = String.valueOf(foo);
和
Object foo = "something";
String bar = (String) foo;
僅當對象實際上是字符串時,才強制轉換為字符串:
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
當對象是其他對象時,它將不起作用:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
但是String.valueOf()
會嘗試將傳遞給它的任何內容轉換為String
。 它處理原語( 42
)和對象(使用該對象的toString()
new Integer(42)
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"
特別注意最后一個示例:將null
傳遞給String.valueOf()
將返回字符串"null"
。
String.valueOf(foo)
調用foo的.toString()
方法,並將結果分配給bar 。 它為null,並輸入安全操作。
如果類型匹配,則僅將foo賦給bar 。 否則,表達式將拋出ClassCastException
。
在String
情況下,兩者都生成相同的輸出 。
如果提供的對象不是string.
則Casting
失敗string.
強制轉換意味着該對象必須為String類型,而String.valueOf()
也可以采用其他類型。
String.valueOf方法用於獲取其參數對象的String表示形式。
(字符串)值將對象值轉換為字符串。
您可以使用String.valueOf方法獲取對象的String表示形式,而不必擔心null引用。 如果嘗試將String強制轉換為null引用,則將獲得NullPointerException。
final Object obj = null; final String strValOfObj = String.valueOf(obj); final String strCastOfObj = (String) obj; if (strValOfObj == null) System.out.println("strValOfObj is null"); if (strCastOfObj == null) System.out.println("strCastOfObj is null");
輸出 : strCastOfObj is null
第一個(即String.valueOf
僅在對象是可表示類型(它是值類型)或String時才返回字符串。否則它將引發異常。
在后一種情況下,您將直接強制轉換,如果對象不是字符串,則可能會失敗。
在線示例。
在String.valueOf();中 字符串作為工作類型廣播在valueof()方法中傳遞的所有參數都在String中轉換,就像integer.string()僅將整數轉換為字符串一樣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.