在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]
无论您使用哪个JDK版本,它都应始终有效:
System.out.println(Arrays.asList(array));
如果数组包含对象,则该方法将起作用。如果数组包含基元类型,则可以使用包装器类,而不是将基元直接存储为。。
例子:
int[] a = new int[]{1,2,3,4,5};
替换为:
Integer[] a = new Integer[]{1,2,3,4,5};
更新:
对需要指出的是,将数组转换为对象数组OR以使用object的数组是昂贵的。这是由于java的特性,称为自动装箱。
因此,仅用于打印目的,不应使用。我们可以创建一个函数,该函数将数组作为参数,并将所需格式打印为
public void printArray(int [] a){
//write printing code
}
如果使用Commons.Lang库,我们可以做到:
ArrayUtils.toString(数组)
int[] intArray = new int[] {1, 2, 3, 4, 5};
String[] strArray = new String[] {"John", "Mary", "Bob"};
ArrayUtils.toString(intArray);
ArrayUtils.toString(strArray);
输出:
{1,2,3,4,5}
{John,Mary,Bob}