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

当前回答

有以下方法打印阵列

 // 1) toString()  
    int[] arrayInt = new int[] {10, 20, 30, 40, 50};  
    System.out.println(Arrays.toString(arrayInt));

// 2 for loop()
    for (int number : arrayInt) {
        System.out.println(number);
    }

// 3 for each()
    for(int x: arrayInt){
         System.out.println(x);
     }

其他回答

阵列.to字符串

作为一个直接的答案,包括@Esko在内的几个公司使用Arrays.toString和Arrays.deepToString方法提供的解决方案是最好的。

Java 8-Stream.collect(joining()),Stream.forEach

下面,我尝试列出一些建议的其他方法,试图进行一些改进,其中最值得注意的是使用Stream.collect运算符,使用一个加入的收集器来模拟String.join正在做的事情。

int[] ints = new int[] {1, 2, 3, 4, 5};
System.out.println(IntStream.of(ints).mapToObj(Integer::toString).collect(Collectors.joining(", ")));
System.out.println(IntStream.of(ints).boxed().map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(ints));

String[] strs = new String[] {"John", "Mary", "Bob"};
System.out.println(Stream.of(strs).collect(Collectors.joining(", ")));
System.out.println(String.join(", ", strs));
System.out.println(Arrays.toString(strs));

DayOfWeek [] days = { FRIDAY, MONDAY, TUESDAY };
System.out.println(Stream.of(days).map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(days));

// These options are not the same as each item is printed on a new line:
IntStream.of(ints).forEach(System.out::println);
Stream.of(strs).forEach(System.out::println);
Stream.of(days).forEach(System.out::println);

在java 8中:

Arrays.stream(myArray).forEach(System.out::println);

从Java5开始,您可以对数组中的数组使用Arrays.toString(arr)或Arrays.deepToString(arr)。注意,Object[]版本对数组中的每个对象调用.toString()。输出甚至按照您要求的方式进行装饰。

示例:

简单阵列:String[]数组=新String[]{“John”,“Mary”,“Bob”};System.out.println(数组.toString(数组));输出:[约翰、玛丽、鲍勃]嵌套数组:String[][]deepArray=新String[][]{{“John”,“Mary”},{“Alice”,“Bob”}};//产生不希望的输出:System.out.println(Arrays.toString(deepArray));//给出所需输出:System.out.println(Array.deepToString(deepArray));输出:[[Ljava.lang.String;@106d69c,[Ljava.lang.String;@52e922][[约翰,玛丽],[爱丽丝,鲍勃]]双阵列: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(数组.toString(intArray));输出:[7, 9, 5, 1, 3 ]

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

可以选择使用org.apache.commons.lang3.StringUtils.join(*)方法例如:

String[] strArray = new String[] { "John", "Mary", "Bob" };
String arrayAsCSV = StringUtils.join(strArray, " , ");
System.out.printf("[%s]", arrayAsCSV);
//output: [John , Mary , Bob]

我使用了以下依赖项

<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>