Java 怎样打印数组内容?
查看完整题解
参考回答
直接回答
一维数组常用 Arrays.toString,嵌套对象数组常用 Arrays.deepToString。直接把普通数组交给 println,通常不会逐个打印元素,而是得到该数组对象的默认字符串表示。需要自定义格式时,可以遍历或使用适合的格式化逻辑。
讲清原理
数组是对象,但没有为元素内容实现通常期待的 toString。Arrays 提供了不同基本类型数组与对象数组的重载,所以 int[] 也可以直接使用 Arrays.toString。
deepToString 会递归处理嵌套数组,因此适合 int[][] 这类“外层元素仍是数组”的结构。它用于显示,不等同于序列化协议;如果要保存后再可靠读取,应使用明确的数据格式。
例子与易错点
int[] values = {1, 2};
int[][] matrix = {{1, 2}, {3}};
System.out.println(java.util.Arrays.toString(values));
// [1, 2]
System.out.println(java.util.Arrays.deepToString(matrix));
// [[1, 2], [3]]
char[] 是一个常见特例:PrintStream 有对应重载,直接打印可能呈现字符内容。不要用这个特例推断所有数组都能直接打印。比较数组内容也应选择 Arrays.equals 或 deepEquals。
相关题:第 13 题、第 31 题。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。