You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中直接打印int数组得到[I@xxx,如何正确输出[1,3]格式内容

问题原因

直接对int数组对象执行System.out.println()时,默认会调用数组对象继承自Object类的toString()方法,返回结果格式为数组类型标识@对象哈希值,其中[I就代表一维int数组,后面的十六进制串是对象哈希值,自然不会输出数组内存储的实际元素。

实现方法

方法1:使用JDK内置的Arrays工具类(推荐)

JDK提供的java.util.Arrays工具类封装了数组转字符串的现成方法,不用手动写遍历逻辑,是日常开发的首选方案。

  1. 在类文件顶部导入Arrays类:
    import java.util.Arrays;
    
  2. 修改打印语句,调用Arrays.toString()方法处理数组后再打印:
    int[] finalAns = {};
    finalAns = new int[]{1, 3};
    // 替换原有的直接打印数组的语句
    System.out.println(Arrays.toString(finalAns));
    

执行后控制台会直接输出[1, 3],和预期格式完全一致。
补充:如果是多维数组,替换为Arrays.deepToString()方法即可得到正确的格式化输出。

方法2:手动拼接字符串

如果不想引入工具类,也可以自己遍历数组元素,手动拼接成目标格式的字符串再打印,示例代码如下:

int[] finalAns = {};
finalAns = new int[]{1, 3};
StringBuilder resBuilder = new StringBuilder("[");
for (int i = 0; i < finalAns.length; i++) {
    resBuilder.append(finalAns[i]);
    // 不是最后一个元素就加逗号分隔
    if (i != finalAns.length - 1) {
        resBuilder.append(", ");
    }
}
resBuilder.append("]");
System.out.println(resBuilder.toString());

运行后同样可以输出[1, 3]格式的结果。

内容的提问来源于stack exchange,提问作者Nazmus Saqueeb Ashrafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:21:29