方法 1:使用 Arrays.toString()(简单但不推荐)
如果直接使用 Arrays.toString(),整个数组会被转换为一个字符串(如 [obj1, obj2]),而不是每个对象单独转换。

Object[] objArray = {1, "hello", true};
String[] strArray = new String[objArray.length];
for (int i = 0; i < objArray.length; i++) {
strArray[i] = objArray[i].toString(); // 调用每个对象的toString()方法
}
System.out.println(Arrays.toString(strArray)); // 输出: [1, hello, true]
适用场景:
- 数组中的每个对象都有合理的
toString()实现(如基本类型包装类、String 等)。
方法 2:使用 Arrays.stream() + map()(Java 8+)
利用 Stream API 将对象数组转换为字符串数组,代码更简洁。
Object[] objArray = {1, "hello", true};
String[] strArray = Arrays.stream(objArray)
.map(Object::toString)
.toArray(String[]::new);
System.out.println(Arrays.toString(strArray)); // 输出: [1, hello, true]
适用场景:
- Java 8 或更高版本。
- 需要函数式编程风格的代码。
方法 3:处理 null 值(健壮性更强)
如果数组可能包含 null,可以指定默认值(如空字符串 )。

Object[] objArray = {1, null, "hello"};
String[] strArray = Arrays.stream(objArray)
.map(obj -> obj == null ? "" : obj.toString())
.toArray(String[]::new);
System.out.println(Arrays.toString(strArray)); // 输出: [1, , hello]
方法 4:自定义转换逻辑(复杂对象)
如果对象需要特殊格式化(如 JSON、日期等),可以结合自定义函数。
Object[] objArray = {new Date(), 123, "test"};
String[] strArray = Arrays.stream(objArray)
.map(obj -> {
if (obj instanceof Date) {
return new SimpleDateFormat("yyyy-MM-dd").format((Date) obj);
}
return obj.toString();
})
.toArray(String[]::new);
System.out.println(Arrays.toString(strArray)); // 输出类似: [2025-10-01, 123, test]
方法 5:使用 String.valueOf()(安全处理 null)
String.valueOf() 会将 null 转换为 "null" 字符串,而 toString() 会抛出 NullPointerException。
Object[] objArray = {1, null, "hello"};
String[] strArray = Arrays.stream(objArray)
.map(String::valueOf)
.toArray(String[]::new);
System.out.println(Arrays.toString(strArray)); // 输出: [1, null, hello]
| 方法 | 特点 | 适用场景 |
|---|---|---|
for 循环 + toString() |
基础,兼容性好 | 任何 Java 版本 |
Arrays.stream() + map() |
简洁,函数式 | Java 8+ |
处理 null 值 |
避免空指针异常 | 可能含 null 的数组 |
| 自定义转换 | 灵活格式化 | 复杂对象(如日期、JSON) |
String.valueOf() |
安全处理 null |
需要保留 "null" 字符串 |
选择方法时,需考虑 Java 版本、数据是否含 null 以及是否需要特殊格式化。

