String.valueOf() 与 Object.toString()

新手上路,请多包涵

在Java中, String.valueOf(Object)Object.toString() 之间有什么区别吗?这些有特定的代码约定吗?

原文由 MCMastery 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 873
2 个回答

根据 Java 文档String.valueOf() 返回:

如果参数是 null ,则字符串等于 "null" ;否则,返回 obj.toString() 的值。

因此,除了额外的方法调用之外,实际上应该没有什么区别。

此外,在 Object#toString 的情况下,如果实例是 null ,则 NullPointerException 将不太 安全 地抛出。

 public static void main(String args[]) {
    String str = null;
    System.out.println(String.valueOf(str));  // This will print a String equal to "null"
    System.out.println(str.toString()); // This will throw a NullPointerException
}

原文由 Kuba Rakoczy 发布,翻译遵循 CC BY-SA 4.0 许可协议

String.valueOf(Object) 和 Object.toString() 之间的区别是:

1) 如果字符串为空,

String.valueOf(Object) 将返回 "null" ,而 Object::toString() 将抛出空指针异常。

 public static void main(String args[]){
    String str = null;

    System.out.println(String.valueOf(str));  // it will print null
    System.out.println(str.toString()); // it will throw NullPointerException
}

2) 签名:

String 类的 valueOf() 方法是静态的。而 String 类的 toString() 方法是非静态的。

string 的 valueOf() 方法的签名或语法如下:

 public static String valueOf(boolean b)
public static String valueOf(char c)
public static String valueOf(char[] c)
public static String valueOf(int i)
public static String valueOf(long l)
public static String valueOf(float f)
public static String valueOf(double d)
public static String valueOf(Object o)

字符串的 toString() 方法的签名或语法如下:

 public String toString()

原文由 Shipra Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题