有用的String.valueOf(Object)方法從JDK 1.0開始就存在了,是我經常使用的JDK提供的方法之一。對象類是在JDK 1.7中引入的,幷包含了Objects.toString(Object)方法。這篇文章比較了這兩種類似的方法。讓我們去做吧!
兩個方法String.valueOf(Object)和Objects.toString(Object)本質上做的是相同的事情:在傳入的對象上調用toString()方法。這種情況下,只要它不是null,或者當null被傳遞給它們時,它不返回字符串“null”。簡而言之,這兩種方法都旨在提供一種簡單的方法來調用對象的toString(),而無需擔心NullPointerException(如果它被證明為null)。
下表比較了String.valueOf(對象)和Object . tostring(對象)方法的特徵。
CHARACTERISTICSTRING.VALUEOF(OBJECT)OBJECTS.TOSTRING(OBJECT)Java SE 10 Method Javadoc"返回對象參數的字符串表示形式。""返回對非空參數調用toString的結果,對空參數調用'null'的結果。"Java SE 10 Return Javadoc"如果參數為空,則字符串為“null”;否則,將返回object . tostring()的值.""為非空參數調用toString,為空參數調用“null”的結果"Method Modifierspublic staticpublic staticOverloaded VersionsvalueOf(boolean)
valueOf(char)
valueOf(char[], int, int)
valueOf(double)
valueOf(float)
valueOf(int)
valueOf(long)
valueOf(Object)
在表面上,似乎是string.valueof(Object)和Objects.toString(Object)也做同樣的事情。結果是它們是一樣的。
下面是OpenJDK的Objects.toString(對象)代碼:
OpenJDK: Objects.toString(Object)定義
public static String toString(Object o) {
return String.valueOf(o);
}
上面的代碼片段顯示了Objects.toString(對象)方法只是委託給String.valueOf(對象)方法。接下來將顯示String.valueOf(Object)的OpenJDK實現。
OpenJDK: String.valueOf(Object)定義
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
上面的代碼片段顯示,當需要對象的toString()表示而不存在NullPointerException時,可以調用String.valueOf(Object)或object. toString(Object)。選擇一個方法可能有一些次要的原因,我通常選擇對String.valueOf(Object)的直接調用,而不是通過Objects.toString(Object)對該方法的間接調用。
雖然我通常使用string . valueof (Object)而不是Objects.toString(Object),但默認情況下,如果傳入的對象為null,我希望返回字符串“null”時,替代重載方法對象。toString(Object, String)的優點是,如果傳入的對象為null,則指定方法返回的任何字符串。例如,可以使用此方法返回空字符串(“”)、字符串“nil”、字符串“none”或任何其他任意字符串(如果傳入的對象為null)。對象的OpenJDK代碼清單。接下來顯示toString(Object,字符串)。
OpenJDK: Objects.toString(Object, String)定義
public static String toString(Object o, String nullDefault) {
return (o != null) ? o.toString() : nullDefault;
}
關於對象有一點需要注意。toString(Object, String)實現是,如果將null傳遞給該方法作為第二個參數,那麼該方法將返回null(而不是字符串“null”或任何其他字符串)。
方法String.valueOf(Object),Object . tostring(Object)和Object。toString(Object、String串)使提供對象的字符串表示變得容易,而不需要為空編寫顯式檢查。
閱讀更多 程序你好 的文章