arrays.tostring() 是最直接的 int 数组转字符串方式,专为调试和日志设计,返回如"[1, 2, 3]"格式,不支持自定义分隔符或纯数字拼接,对null安全,但仅适用于一维数组。

Arrays.toString() 是最直接的 int 数组转字符串方式
它专为这种场景设计,不需手动拼接、不依赖第三方库,输出格式也符合日常调试和日志需求。但要注意:它返回的是带方括号和逗号分隔的字符串(如 "[1, 2, 3]"),不是纯数字连缀(如 "123")。
- 适用于日志打印、单元测试断言、快速查看数组内容
- 对
null数组会返回"null",不会抛NullPointerException - 只处理一维数组;对二维数组(
int[][])会打印引用地址,得用Arrays.deepToString() - 性能开销极小,内部是遍历 +
StringBuilder,比手写循环更可靠
别把 Arrays.toString() 当作字符串拼接工具用
有人想用它生成无空格、无括号的纯数字串,比如把 {1, 2, 3} 变成 "123",这是典型误用。它不接受分隔符参数,也不支持格式定制。
- 错误写法:
Arrays.toString(arr).replace("[", "").replace("]", "").replace(", ", "")—— 多次字符串拷贝,低效且易出错(比如元素含负数时,"-1"里的-会被误删) - 正确思路:真要拼纯数字串,该用
String.join()配合Stream或传统循环 - 示例(Java 8+):
String.join("", Arrays.stream(arr).mapToObj(String::valueOf).toArray(String[]::new))
遇到空指针或乱码?先确认数组本身是否为 null
Arrays.toString() 自身很安全,但常见报错往往来自上游——比如你传进去的是一个还没初始化的局部数组变量,或者从方法返回的可能是 null。
- 典型错误现象:
NullPointerException报在调用处,但堆栈指向你自己的代码行,不是Arrays.toString内部 - 检查点:在调用前加一句
if (arr == null) { ... },别假设数组一定非空 - 如果数组元素是中文字符对应的 Unicode 码点(比如
int[]{20320, 22909}),转出的字符串仍是数字序列,不是“你好”——int数组存的是数值,不是 char 或 String
替代方案对比:什么时候不该用 Arrays.toString()
它够用,但不是万能。当你的目标是序列化、网络传输或持久化,或者需要控制精度/进制/分隔符时,就得换路子。
立即学习“Java免费学习笔记(深入)”;
- 要 JSON 格式?用 Jackson 的
ObjectMapper.writeValueAsString(arr),结果是[1,2,3](无空格) - 要十六进制表示每个元素?得自己遍历,用
String.format("%x", n) - 要兼容旧版 Android(API Arrays.toString() 从 Java 5 就有,没问题;但
String.join()要 API 26+,得降级用TextUtils.join()或 StringBuilder
Arrays.toString(arr) 就完事。真正容易被忽略的,是它对 null 的宽容和对多维数组的“失明”——这两个边界条件,线上出过不少静默 bug。










