Java中直接打印int数组得到[I@xxx,如何正确输出[1,3]格式内容
问题原因
直接对int数组对象执行System.out.println()时,默认会调用数组对象继承自Object类的toString()方法,返回结果格式为数组类型标识@对象哈希值,其中[I就代表一维int数组,后面的十六进制串是对象哈希值,自然不会输出数组内存储的实际元素。
实现方法
方法1:使用JDK内置的Arrays工具类(推荐)
JDK提供的java.util.Arrays工具类封装了数组转字符串的现成方法,不用手动写遍历逻辑,是日常开发的首选方案。
- 在类文件顶部导入Arrays类:
import java.util.Arrays; - 修改打印语句,调用
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
相关产品推荐
相关产品推荐

