Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Java 怎样打印数组内容?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

一维数组常用 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 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。