打印 Java 数组的最简单方法是什么?

新手上路,请多包涵

在 Java 中,数组不会覆盖 toString() ,所以如果你尝试直接打印一个,你会得到 className + ‘@’ + hashCode 的十六进制 --- 数组的,由 Object.toString() 定义:

 int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

但通常,我们实际上想要更像 [1, 2, 3, 4, 5] 的东西。最简单的方法是什么?以下是一些示例输入和输出:

 // Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]

原文由 Alex Spurling 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 497
2 个回答

从 Java 5 开始,您可以将 Arrays.toString(arr)Arrays.deepToString(arr) 用于数组中的数组。请注意, Object[] 版本对数组中的每个对象调用 .toString() 。输出甚至以您要求的确切方式进行装饰。

例子:

  • ### 简单数组:
   String[] array = new String[] {"John", "Mary", "Bob"};
  System.out.println(Arrays.toString(array));

输出:

   [John, Mary, Bob]

  • ### 嵌套数组:
   String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
  System.out.println(Arrays.toString(deepArray));
  //output: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
  System.out.println(Arrays.deepToString(deepArray));

输出:

   [[John, Mary], [Alice, Bob]]

  • ### double 数组:
   double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
  System.out.println(Arrays.toString(doubleArray));

输出:

   [7.0, 9.0, 5.0, 1.0, 3.0 ]

  • ### int 数组:
   int[] intArray = { 7, 9, 5, 1, 3 };
  System.out.println(Arrays.toString(intArray));

输出:

   [7, 9, 5, 1, 3 ]

原文由 Esko 发布,翻译遵循 CC BY-SA 4.0 许可协议

始终首先检查标准库。

 import java.util.Arrays;

然后尝试:

 System.out.println(Arrays.toString(array));

或者如果您的数组包含其他数组作为元素:

 System.out.println(Arrays.deepToString(array));

原文由 Limbic System 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题