一、何为数组
关于数组,百度百科的定义是这样说的,数组(Array) 是有序的元素序列。
若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。
由此我们可以找到这样几个关键字,数组,数组名,数组元素,下标。
简单的来说:
数组中存放着多个相同类型的数据
这一系列数据有序的放到一起的组合的名字叫数组名
为了区分数组中的元素,为其依次编号为0,1,2,…这些编号,我们叫下标
二、为何要使用数组
举个小栗子:需要存储一个班级50个人的Java成绩,如果不用数组,
我们大概会这样定义变量,float a,b,c,d,e…
或者这样float score1,score2,score3,score4,…score100,
那么如果要计算他们的和,我们需要这样:
sum = a +b+c+d…
或者 sum = score1+score2+score3…score100
但是无论哪一种,你会发现,处理起来很麻烦,需要手动一个个去操作,而我们明明知道,他们都是浮点型,都表示的是成绩,有着相同的特征,如果有了数组,马上会不一样。所以,数组的存在,是为了方便表示数据之间的关系,方便存储,计算等操作的。
数组按维度分可以分为一维数组、二维数组,当然更复杂的也有多维数组,这个暂不考虑。
三、一维数组
-
一维数组的声明
数据类型[] 数组名;
如:int[] arr; 表明声明了一个int类型的数组,名字叫arr,那么这个数组中就只能放int类型数据
float[] arr1; 表明声明了一个float类型的数组,名字叫arr1,那么这个数组中就只能放float类型数据
当然,亦可以使用 数据类型 数组名[]; 即int arr[];不过这种方式不被阿里编程者规范所推荐。我们也要求大家使用第一种。 -
一维数组初始化
之前介绍过,数组是多个相同数据类型的数据的组合,第1点中的数组声明只是规定了数组的元素类型和数组名,还需要规定这个数组里元素个数及数据的初始取值,这个部分叫做数组初始化。
数组的初始化根据给定初值和使用默认初值两种方式,分别叫数组的静态初始化和动态初始化。
int[] arr;
float[] arr1;
- 静态初始化: 数组名 = new 数据类型[]{元素初值1,元素初值2…}
arr = new int[]{10,20,30,45,21};
arr1= new float[]{1.1f,2.5f,3.4f,67.1f};
- 动态初始化: 数组名 = new 数据类型[数组长度]
arr = new int[5];
arr1 = new float[4];
由以上操作对比可知,
arr定义的是int类型的数组,在初始化的时候,必须new int,arr1是float类型的数组,在初始化的时候必须new float,其中new 是一个关键词,可以理解为分配int的空间或者分配float类型的空间等。
静态初始化[]中的数组长度为空,真实数组长度为其后{}里的数据个数,并且依次为0,1,2…号数组赋值为10,20,30… 即随后第1个元素,即下标为0的元素,arr[0]就是10,依次类推
动态初始化[]中需要规定数据,这个数据表示数组元素的个数,故必须为 >0的整数,其元素的值为默认值
数据类型 | 默认初始化值 |
---|---|
byte,short,int,long | 0 |
float,double | 0.0 |
char | 一个空字符’\u0000’ |
boolean | false |
其他引用数据类型 | null,表示不引用任何类型 |
3.数组的声明与初始化合并
与变量的定义和初始化可以合并一样,数组的初始化也可以合并,
int[] arr;
arr = new int[]{1,2,4,6,7,10};
//以上代码等价于下面的定义,当然同一个文件中不能存在相同的变量名,换个名字
int[] arr1 = new int[]{1,2,4,6,7,10};
4.数组元素的使用
数组元素的语法结构: 数组名[下标]
举个小栗子:
int[] arr = new int[5];
arr[1] = 80;//单独为第二个元素赋值为80
arr[3] = 100;//单独为第四个元素赋值为100
数组元素分别为 arr[0],arr[1],arr[2],arr[3],arr[4]。
注意: 数组元素的下标必须是>=0整数,且不能超过数组元素个数-1