代码人生

String.valueOf(Object) Vs. Objects.toString(Object)

代码人生 http://www.she9.com 2018-08-29 16:42 出处:网络 编辑:@技术狂热粉
这两种方法真的有那么不同吗?或者,它们仅仅与特定的用例相似吗?单击这里可以了解更多关于string.valueOf()和Objects.toSpring()方法的信息。

有用的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 static
Overloaded 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(ObjectString串)使提供对象的字符串表示变得容易,而不需要为空编写显式检查。


请关注公众号:程序你好
0

精彩评论

暂无评论...
验证码 换一张
取 消