本文是《Java 入门指南》的第十九篇文章,介绍了 Java 的 数组。

数组

描述:

数组是相同数据的有序集合。

数组需要满足以下的条件:

  1. 数据都是同一个类型。
  2. 按照一定的顺序进行排序。

其中,每一个数据,都被称为数组元素,可以通过数组下标访问每一个数组元素。

数组的长度是确定的(不可改变的) , arrayName.length 表示数组的长度。

数组的下标是从0开始的,数组的下标的范围是 [0,arryName.length)。

一旦数组的元素不在范围内,就会出现 ArrayIndexOutOfBoundsException(数组下标越界异常)。

定义:

//数据类型[] 数组名(推荐)
dataType[] arrayName; 

//数据类型 数组名[]
dataType arrayName[];

建议使用 dataType[] arrayName; 的格式定义一个数组,dataType arrayName[]; 的格式来自于 C/C++ 语言,是为了方便 C/C++ 程序员理解 Java 语言。

实例:

示例代码(数组的定义):

package com.jianrry.test;

public class Test {

    public static void main(String[] args) {

        //定义一个 int 类型的数组 number。
        int[] number;

        //初始化 int 类型的数组 number,设置数组大小为10。
        number = new int[10];

        //为 int 类型的数组 number 赋值。
        number[0]=1;
        number[1]=2;
        number[2]=3;
        number[3]=4;
        number[4]=5;
        number[5]=6;
        number[6]=7;
        number[7]=8;
        number[8]=9;
        number[9]=10;

        //数组的下标是从0开始的,数组的下标的范围是 [0,arryName.length)。
        //number.length 表示数组 number 的长度。
        for (int i = 0; i < number.length; i++) {

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

        }

    }

}

运行结果(数组的定义):

1
2
3
4
5
6
7
8
9
10

示例代码(数组的初始化):

package com.jianrry.test;

public class Test {

    public static void main(String[] args) {

        //静态初始化:定义一个数组,并给数组中的元素赋值。
        int[] number1={1,2,3,4,5,6,7,8,9,10};

        System.out.println("number1[0]="+number1[0]);


        //动态初始化:定义一个数组,并设置数组的长度。
        //动态初始化包含了默认初始化,即初始化时分配内存空间,此时数组中的元素的值都是数据类型的默认值。
        int[] number2=new int[10];

        number2[0]=1;

        number2[1]=2;

        number2[2]=3;

        number2[3]=4;

        number2[4]=5;

        number2[5]=6;

        number2[6]=7;

        number2[7]=8;

        number2[8]=9;

        number2[9]=10;

        System.out.println("number2[0]="+number2[0]);


        //默认初始化:定义一个数组,数组中的元素的值是数据类型的默认值。
        //数组是引用类型,数组中的元素相当于类中的实例变量。
        //数组初始化时,自动分配内存空间,数组中的元素会按照实例变量的方式被隐式初始化。
        int[] number3=new int[10];

        System.out.println("number3[0]="+number3[0]);

    }

}

运行结果(数组的初始化):

number1[0]=1
number2[0]=1
number3[0]=0

示例代码(数组的使用):

package com.jianrry.test;

public class Test {

    public static void main(String[] args) {

        //定义一个 int 类型的数组,并给数组中的元素赋值。
        int[] number={1,2,3,4,5,6,7,8,9,10};

        //打印输出数组。
        print(number);

        //打印输出反转的数组。
        print(reverse(number));

    }

    //int 类型的数组作为参数。
    public static void print(int[] arr){

        //for each 循环(增强 for 循环)。
        for (int i : arr) {

            System.out.print(i+"\t");

        }

        System.out.print("\n");

    }

    //int 类型的数组作为返回值。
    public static int[] reverse(int[] arr){

        int[] temp=new int[arr.length];

        for (int i = 0,j = temp.length - 1; i < arr.length; i++,j--) {

            temp[j]=arr[i];
            
        }

        return temp;
    }

}

运行结果(数组的使用):

1	2	3	4	5	6	7	8	9	10	
10	9	8	7	6	5	4	3	2	1	

多维数组

描述:

多维数组可以视为数组的数组,本质上是一个特殊的数组,里面的每一个元素都是一个数组。

以二维数组为例,二维数组是一个特殊的一维数组,里面的每一个元素都是一个一维数组。

定义:

以二维数组为例:

//数据类型[][] 数组名(推荐)
dataType[][] arrayName; 

//数据类型 数组名[][]
dataType arrayName[][];

建议使用 dataType[][] arrayName; 的格式定义一个数组,dataType arrayName[][]; 的格式来自于 C/C++ 语言,是为了方便 C/C++ 程序员理解 Java 语言。

实例:

示例代码:

package com.jianrry.test;

public class Test {

    public static void main(String[] args) {

        //定义一个 int 类型的数组 number,并给数组中的元素赋值。
        int[][] number={{1,2},{3,4},{5,6},{7,8},{9,10}};

        //打印输出二维数组。
        print(number);

    }

    //int 类型的二维数组作为参数。
    public static void print(int[][] arr){

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

            for (int j = 0; j < arr[0].length; j++) {

                System.out.print(arr[i][j]+"\t");

            }

            System.out.print("\n");

        }

    }

}

运行结果:

1	2	
3	4	
5	6	
7	8	
9	10	

Arrays 类

描述:

Arrays 类是一个工具类,能够方便地操作数组。

有以下的功能:

  • 将数组转化为字符串:通过 toString 方法。
  • 对数组进行排序:通过 sort 方法。
  • 对数组进行赋值:通过 fill 方法。
  • 对数组进行比较:通过 equals 方法。
  • 查找数组的元素:通过 binarySearch 方法。

实例:

示例代码:

package com.jianrry.test;

import java.util.Arrays;

public class Test {

    public static void main(String[] args) {

        int[] number={1,2,3,6,9,8,7,4,5};

        //将数组转换为字符串。
        System.out.println(Arrays.toString(number));


        //对数组进行排序,默认升序。
        Arrays.sort(number);

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


        //对数组进行赋值。
        Arrays.fill(number,0);

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


        //对数组进行比较。
        int[] number2={1,2,3,4,5,6,7,8,9};

        System.out.println(Arrays.equals(number,number2));


        //查找数组的元素。
        System.out.println(Arrays.binarySearch(number2,3));

    }

}

运行结果:

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