簡體   English   中英

轉換為String和String.valueOf之間的區別

[英]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時才返回字符串。否則它將引發異常。

在后一種情況下,您將直接強制轉換,如果對象不是字符串,則可能會失敗。

在線示例。

http://ideone.com/p7AGh5

在String.valueOf();中 字符串作為工作類型廣播在valueof()方法中傳遞的所有參數都在String中轉換,就像integer.string()僅將整數轉換為字符串一樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM