JAVA – 数组 (Arrays, Dictionnaire)

数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。

在JAVA中,当一个数组给创建,那么这个数组就有一个固定的长度。每一个在数组终的个体,我们称其为元素,每一个元素在数组中都有一个对应的索引号码。而这个索引号码,从0开始计数,也就是说第一个数组中的元素,他的索引号码是0. 如下面这个例子:

我们创建了一个数长度为10的数组,那么10个元素对应的号码从0开始,一直到9结束。假设我们需要找第九个元素,那么我们因该用所以号码八去找这个元素。

Illustration of an array as 10 boxes numbered 0 through 9; an index of 0 indicates the first element in the array

下面这个例子是在JAVA变成中,创建一个整数型数组的全过程,当然这个在实际的变成环境下,我们更多用的是循环来自动创建一个数组,而不是一行一行的把数组的元素输入。

class ArrayDemo {
     public static void main(String[] args) {
          int[] anArray;              // 声明一个整数型数组
          anArray = new int[10];      // 给10个整数分配内存

          anArray[0] = 100; // 初始化第一个元素
          anArray[1] = 200; // 初始化第二个元素
          anArray[2] = 300; // 同上。
          anArray[3] = 400;
          anArray[4] = 500;
          anArray[5] = 600;
          anArray[6] = 700;
          anArray[7] = 800;
          anArray[8] = 900;
          anArray[9] = 1000;

          System.out.println("Element at index 0: " + anArray[0]);
          System.out.println("Element at index 1: " + anArray[1]);
          System.out.println("Element at index 2: " + anArray[2]);
          System.out.println("Element at index 3: " + anArray[3]);
          System.out.println("Element at index 4: " + anArray[4]);
          System.out.println("Element at index 5: " + anArray[5]);
          System.out.println("Element at index 6: " + anArray[6]);
          System.out.println("Element at index 7: " + anArray[7]);
          System.out.println("Element at index 8: " + anArray[8]);
          System.out.println("Element at index 9: " + anArray[9]);
     }
}

程序输出结果为:

Element at index 0: 100
Element at index 1: 200
Element at index 2: 300
Element at index 3: 400
Element at index 4: 500
Element at index 5: 600
Element at index 6: 700
Element at index 7: 800
Element at index 8: 900
Element at index 9: 1000

如何申明一个数组

上面的例子向我们展示了申明一个整数型数组。而一个数组的声明,可以通过如下格式:

int[] anArray;

数组的类型跟一组空的终括号,最后加上数组的名字。还有另外一种方式用来声明数组,那就是把中括号放到数组名字的后面,而更改数组的类型,可以和定义变量的类型一样,如:

float anArrayOfFloats[];

下面这个列表是所有可创建的数组类型:

byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
foat[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;

数组的创建,初始化以及访问

数组的创建和初始化可以有两种方式,上面的例子是第一种方式:

anArray = new int[10];  // create an array of integers

通过new来新建一个数组,用int指出其包含的元素类型,以及后面终括号中的数字,限定了数组的长度。接下来在通过如下方式来给数组添加元素:

anArray[0] = 100; // initialize first element
anArray[1] = 200; // initialize second element
anArray[2] = 300; // etc.

这里可以发现,在数组名字后面的中括号中,我们加入了索引号码,也就是说,anArray[0]我们在第一个位置添加第一个元素。从读取或者说访问角度来说,我们也同样使用数组名加中括号和索引数字来读取相对的元素。

而另一种建立数组的方式是:

int[] anArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};

格式很简单,这个方法是直接把数组进行定义,并且直接给定数组长度和数组元素。我们在大括号中添加数组的元素,100,200,300等等都是数组的元素,而所有元素的个数就是这个数组的长度了。

多层数组的建立

在java编程语言中,我们可是定义一个多层数组。就是一个数组中有多个数组。如下:

第一种方法:声明数组 int[][] anArrays

第二种方法:int[][] anArrays = {{1,2,3,4,5,6,7},{2,1,3,4,5,6},{5,3,3,1,2,3,4,}}

数组的拷贝:

java语言提供了一个模块arraycopy来拷贝一个数组到另外一个数组。

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)

在上面的语法规则中,我们能看到2个Object,他们分别是:第一个Object是原始数组,第二个Object是对象数组。而里面有3个int,分别是:第一个int,原始数组的第几个位置;第二个int,对象数组的位置;第三个int,复制的元素个数。