在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]

当前回答

如果使用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}

其他回答

无论您使用哪个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
} 

从Java 8开始,还可以利用String类提供的join()方法打印出数组元素,不带括号,并用分隔符分隔(这是下面示例中的空格字符):

String[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting) 

输出将是“嘿,朋友!”。

for(int n: someArray) {
    System.out.println(n+" ");
}

您可以循环遍历数组,在循环时打印出每个项。例如:

String[] items = {"item 1", "item 2", "item 3"};

for(int i = 0; i < items.length; i++) {

    System.out.println(items[i]);

}

输出:

item 1
item 2
item 3

如果您正在运行jdk 8。

public static void print(int[] array) {
    StringJoiner joiner = new StringJoiner(",", "[", "]");
    Arrays.stream(array).forEach(element -> joiner.add(element + ""));
    System.out.println(joiner.toString());
}


int[] array = new int[]{7, 3, 5, 1, 3};
print(array);

输出:

[7,3,5,1,3]