Java 数组


数组是用来保存同类型多个数据的容器。


数组长度在数组创建时指定,之后长度不能更改。数组中保存的数据称为元素。

数组中的所有元素在内存中是连续的。数组索引从0开始。通过数组索引访问数组中的元素。例如arr[0]表示访问数组arr的第1个元素。

创建和访问数组

有两种创建数组的方法:

  • 通过new运算符和指定数组的长度的方式。例如int[] arr = new int[10];
  • 通过指定数组元素的方式。int[] arr = {1, 2, 3};

下面是创建和访问数组的例子:

public class ArrCreate {
    public static void main(String[] args) {
        int[] arr = new int[5];
        arr[0] = 10;
        arr[1] = 20;
        arr[2] = 30;

        String[] colors = {"red", "blue"};
        Fruit[] fruits = {new Fruit("apple"), new Fruit("pear")};

        for (int i : arr)
            System.out.println(i);    // 10 20 30 0 0

        for (Fruit f : fruits)
            System.out.println(f.name);    // apple pear
    }
}

class Fruit {
    String name;
    public Fruit(String name) {
        this.name = name;
    }
}


多维数组

多维数组指数组中元素也是数组的数组。多维数组包含的各元素数组的长度可以不同。

下面是多维数组的例子:

public class ArrMulti {
    public static void main(String[] args) {
        int[][] arr = new int[3][3];
        String[][] fruits = { { "apple", "banana", "orange" }, { "pear", "lemon" } };
        for (int[] i : arr)
            System.out.println(i);    // [I@7852e922

        System.out.println(fruits[0][2]);    // orange
        System.out.println(fruits[1][1]);    // lemon
        //System.out.println(fruits[1][2]); // error: ArrayIndexOutOfBoundsException: 2
    }
}

复制数组

下面是复制数组的例子:

import java.util.Arrays;

public class ArrCopy {
    public static void main(String[] args) {
        String[] colors = new String[] {"red", "blue", "orange"};
        String[] to = new String[2];
        System.arraycopy(colors, 1, to, 0, 2);
        System.out.println(to[0]);    // blue

        String[] copyColors = Arrays.copyOfRange(colors, 0, 1);
        System.out.println(copyColors[0]);    // red
    }
}

在数组中查找

下面是数组中查找的例子:

import java.util.Arrays;

public class ArrFind {
    public static void main(String[] args) {
        String[] colors = new String[] {"red", "blue", "orange"};
        System.out.println(Arrays.binarySearch(colors, "blue"));    // 1
        System.out.println(Arrays.binarySearch(colors, "white"));    // -4
    }
}

对数组排序

下面是数组排序的例子:

import java.util.Arrays;

public class ArrSort {
    public static void main(String[] args) {
    String[] colors = new String[] {"red", "blue", "orange"};
    Arrays.sort(colors);
    for (String c : colors)
        System.out.println(c);    // blue orange red
    }
}