5.1 数组的定义和访问
数组是使用同一个变量名的一组数据,该组数据是同一种变量类型。
数组就如同一个变量一样。我们用表格来理解数组,如下图所示:


a是名称,它占据了6个内存单位,这6个内存单位都能保存数据,它们共享同一个名字:a 。
数组a[0]代表第一个元素,a[3]代表第四个元素。
数组的定义主要有以下几种:
//注意中括号的位置,两种都可以int a[]=new int[6];int[]b=new int[6];int c[]={1,23,45,6,78,98};double[]array=new double[]{1.0,2.0,3,4,5,6,7,8,9,10};
int a[]=new int[6];这行语句定义了一个有6个数据的数组,每个数据都是整型数据。int b[]=new int[6]也一样。
a和b定义了数组的类型及数组元素个数,但没有给每个元素赋值(整数类型的数组,初值是0)。注意c直接定义每个元素的值。
数组的定义有以下原则:
(1)必须指定数组的数据类型,而且只能把相同类型的数据赋给数组元素。
(2)数组定义的时候,数组的元素个数必须是整数,可以是变量或具体数字,一旦定义,数据的元素个数就不能再更改了。
(3)值是数字类型(int、short、byte、long、float、double)的数组,定义好后所有元素的初值为0。字符数组(char)定义后都是没有值的,相当于char c的c,不赋值不能参与计算。
数组是通过下标来访问各个元素的。下标从0开始,例如:
a[0]表示数组a第1个元素。
a[5]表示数组a第6个元素。
我们可以通过下标给每个元素赋予不同的值:
int a[]=new int[6];
a[0]=6;
a[1]=7;
a[2]=18;
int i=a[2]+8;
//i的值就是26
下标不能越界。所谓的越界就是访问了数组不存在的元素,例如数组只有6个元素,访问的是第7个元素。下标小于0,也称为越界。
下标可以是变量,如a[i];也可以是表达式,如a[i+2],使用表达式也一样,绝对不能越界。
int k=2;
int a[]=new int[6];
//使用具体数字作为下标
a[0]=5;
//使用变量作为下标
a[k]=4;
//使用表达式作为下标
a[k+1]=5;
//下标越界了,a[6]表示第7个元素
a[6]=9;
数组的元素的个数称为数组的长度。数组有一个属性length,可以根据这个属性得知数组的元素个数。
例如下面的代码将打印20:
int a[]=new int[20];
System.out.println(a.length);