String.valueOf() vs. Object.toString()
在 Java 中,和 之间有什么区别吗?这些是否有特定的代码约定?String.valueOf(Object)
Object.toString()
在 Java 中,和 之间有什么区别吗?这些是否有特定的代码约定?String.valueOf(Object)
Object.toString()
根据 Java 文档,返回:String.valueOf()
如果参数是 ,则字符串等于 ;否则,将返回 的值。
null
"null"
obj.toString()
因此,除了额外的方法调用之外,实际上不应该有任何区别。
此外,在 的情况下,如果实例是 ,则会抛出 a,因此可以说,它不太安全。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
}
String.valueOf(Object) 和 Object.toString() 之间的区别在于:
1) 如果字符串为空,
String.valueOf(Object)
将返回 “null”
,而 Object::toString()
将引发 null 指针异常。
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() 方法是非静态的。
字符串的 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()