String.valueOf() vs. Object.toString()

2022-08-31 06:51:40

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


答案 1

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

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

因此,除了额外的方法调用之外,实际上不应该有任何区别。

此外,在 的情况下,如果实例是 ,则会抛出 a,因此可以说,它不太安全Object#toStringnullNullPointerException

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
} 

答案 2

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()