如何在Java中打印数组

时间:2020-02-23 14:35:31  来源:igfitidea点击:

在本教程中,我们将看到如何在Java中打印数组。

打印数组有多种方式。
让我们通过几种方法来打印Java中的数组。

使用arrays.tostring()

我们可以使用 Arrays.toString()在Java中打印数组的方法。
这是打印数组的最简单方法。
arrays.tostring()返回字符串对象.This字符串包含字符串格式的数组。
让我们用代码理解

import java.util.*;
public class Main {
    public static void main(String args[]) {
        int a[]={1,6,7,9,4};       
        int n = a.length;      //a.length returns size of array.
        String f = Arrays.toString(a);  //Array in string format
        System.out.println(f);
    }
}

输出:

[1, 6, 7, 9, 4]

使用Deeptostring()方法

基本上 Arrays.toString()适用于1维数组,但它不会适用于多维阵列。
假设我们有二维阵列,如图1 2 3 4 5 6 7 8 9将多维数组转换为串,可以使用 Arrays.deepToString()方法。
这是如何在Java中打印2D数组的方式。

import java.util.*;
public class Main {
    public static void main(String args[]) 
    {
        int a[][] = {{1,2,3},{4,5,6},{7,8,9}};
        String x = Arrays.deepToString(a);
        System.out.println(x);    
    }
}

输出:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

使用Java 8流API

在Java 8中,我们可以将数组转换为流和打印阵列,其中包含流的foreach()方法。

package org.igi.theitroad;
 
import java.util.Arrays;
 
public class PrintArrayMain {
 
    public static void main(String args[])
    {
        System.out.println("================");
        System.out.println("Printing 1D String array");
        System.out.println("================");
        String[] countriesArr = new String[]{"Netherlands", "China", "Japan", "Bhutan"};
        Arrays.stream(countriesArr).forEach(System.out::println);
 
        System.out.println("================");
        System.out.println("Printing 1D Integer array");
        System.out.println("================");
        int[] arrayInt = {1, 2, 3, 4, 5};
        Arrays.stream(arrayInt).forEach(System.out::println);
 
        System.out.println("================");
        System.out.println("Printing 2D String array");
        System.out.println("================");
        String[][] string2DArray = new String[][]{{"Java", "Python"}, {"Go", "Kotlon"}};
        Arrays.stream(string2DArray).flatMap(str -> Arrays.stream(str)).forEach(System.out::println);
 
        System.out.println("================");
        System.out.println("Printing 2D String array");
        System.out.println("================");
        int[][] int2DArray = new int[][]{{10, 20, 30, 40}, {50, 60, 70, 80}};
        Arrays.stream(int2DArray).flatMapToInt(i -> Arrays.stream(i)).forEach(System.out::println);
 
    }
}

输出:

================
Printing 1D String array
================
Netherlands
China
Japan
Bhutan
================
Printing 1D Integer array
================
1
2
3
4
5
================
Printing 2D String array
================
Java
Python
Go
Kotlon
================
Printing 2D String array
================
10
20
30
40
50
60
70
80

正如我们所看到的,我们已经看到了如何使用Stream在Java中打印字符串数组和整数数组。

使用循环

我们可以使用Java中的循环和打印数组的循环和打印元素迭代数组。

public class Main {
    public static void main(String args[]) {
        int a[]={1,6,7,9,4};       
        int n = a.length;      //a.length returns size of array.
        for(int i=0;i<n;i++)
        {
            System.out.print(a[i]+" ");  //printing all the elements of array.
        }
        System.out.println();
        //Arrays can be accessed randomly
        //Eg : Lets try to print 3rd element of array,
        System.out.println("3rd element of array is: "+a[2]);
    }
}

输出:

1 6 7 9 4
3rd element of array is: 7

使用每个循环

对于每个与循环相同的工作,但与语法不同。

public class Main {
    public static void main(String args[]) {
        int a[]={1,6,7,9,4};       
        for(Integer i : a)  //for every iteration, each array element is stored in i.
        {
            System.out.print(i+" ");  //printing all the elements of array.
        }
    }
}

输出:

1 6 7 9 4

在Java中以相反的顺序打印阵列

我们可以以相反的顺序使用循环迭代阵列并打印元素。

这将以相反的顺序打印阵列。

public class Main {
    public static void main(String args[]) {
        int a[]={1,6,7,9,4};       
        int n = a.length;      //a.length returns size of array.
        for(int i=n-1;i>=0;i--)
        {
            System.out.print(a[i]+" ");  //printing all the elements of array.
        }
        System.out.println();
    }
}

输出:

4 9 7 6 1

使用自定义对象打印数组

如果,我们在数组中有自定义对象,那么我们应该重写(overwriting) toString()自定义类中的方法,否则它将为我们提供意外结果。
让我们在exclue创建一个名为的简单类的帮助下看 Color.java

package org.igi.theitroad;
 
public class Color {
 
    String name;
    String colorCode;
 
    public Color(String name, String colorCode) {
        super();
        this.name = name;
        this.colorCode = colorCode;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getColorCode() {
        return colorCode;
    }
 
    public void setColorCode(String colorCode) {
        this.colorCode = colorCode;
    }
}

创建名为的主类 PrintArrayOfColors.java

package org.igi.theitroad;
 
import java.util.Arrays;
 
public class PrintArrayOfColors {
    public static void main(String[] args) {
 
        Color red = new Color("Red", "#FF0000");
        Color blue = new Color("Blue", "0000FF");
        Color white = new Color("White", "#FFFFFF");
        Color green = new Color("Green", "#008000");
 
        Color[] colorArray=new Color[]{red,blue,white,green};
        System.out.println(Arrays.toString(colorArray));
    }
}

如果我们注意到,我们没有 toString()方法 Color类,这就是为什么它正在调用对象的ToString()方法,我们无法看到有意义的结果。

我们需要重写(overwriting) toString()方法 Color类,我们将获得信息性的输出。

package org.igi.theitroad;
 
public class Color {
 
    String name;
    String colorCode;
 
    public Color(String name, String colorCode) {
        super();
        this.name = name;
        this.colorCode = colorCode;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getColorCode() {
        return colorCode;
    }
 
    public void setColorCode(String colorCode) {
        this.colorCode = colorCode;
    }
 
       @Override
    public String toString() {
        return "Color{" +
                "name='" + name + '\'' +
                ", colorCode='" + colorCode + '\'' +
                '}';
    }
}