string.valueof和tostring的区别
时间: 2023-09-21 08:11:01 浏览: 52
`String.valueOf()` 和 `toString()` 都是将一个对象转换成字符串的方法,但它们之间有一些区别。
`String.valueOf()` 方法是一个静态方法,可以将任何类型的数据转换成字符串类型。如果传递的参数是 null,则返回 "null" 字符串。
`toString()` 方法是 Object 类的方法,它将对象转换成字符串类型。如果对象为 null,则会抛出 `NullPointerException` 异常。
另外,对于一些对象,如基本数据类型的包装类、String 类等,它们已经实现了 `toString()` 方法,因此可以直接调用该方法将其转换成字符串类型。而 `String.valueOf()` 方法则可以将任何类型的数据转换成字符串类型,包括基本数据类型、数组等。
例如:
```java
Integer i = 10;
String str1 = String.valueOf(i); // str1 = "10"
String str2 = i.toString(); // str2 = "10"
String[] arr = {"a", "b", "c"};
String str3 = String.valueOf(arr); // str3 = "[Ljava.lang.String;@6d06d69c"
String str4 = arr.toString(); // str4 = "[Ljava.lang.String;@6d06d69c"
```
可以看到,`String.valueOf()` 方法可以将数组转换成字符串类型,但是返回的结果并不是我们期望的字符串,而是一个包含类名和哈希码的字符串。而使用 `toString()` 方法将数组转换成字符串类型,则可以得到我们期望的字符串。