天天看点

3.2 数组1 -【Java入门--疯狂Java讲义】

数组,是一种存储多个数据的数据结构,可以理解成一个容器,这些存储的值在内存中是连续存放的,我们可以通过下标(即索引)来查询或者修改数据。在Java里面,一个数组只能存放一种类型的数据(即使是在后面的学习中存放了有继承关系的不同类型的对象,数组的类型也是同一类,只不过是父类的类型);在Java中,数组长度是不可变的。特别的,数组本身就是一种引用数据类型的数据。

定义数组:

类型[] 数组名;   (推荐)

类型 数组名[];

 一般推荐使用第一种,因为第一种 类型[] 是类型名,而第二种类型 是一种类型名,而 数组名[] 变成了数组名,例如:

int[] num;和int num[];两种,后者很容易让人误解为数据类型是int型的。

数组的初始化:

//定义数组
int[] arr;
//静态初始化
arr = new int[]{1,2,3,4,5};
//简化的静态初始化
arr = {1,2,3,4,5};
//动态初始化
int len = 5;//len代表数组长度
arr = new int[len];//输出[0,0,0,0,0]
           

注意的一点,动态初始化的时候,系统再到会给数组项一个初始化的值,根据数据类型不同:

byte short int long     0

float  double     0.0

boolean     false

char  '\U0000'

引用数据类型  null

所以上面代码我们没有赋值,都是由初始值的。 

使用数组:

int[] arr = new int[5];
//赋值,注意索引要小于长度,不然会引发异常
arr[2] = 15;
//访问
int num = arr[2];
//for循环遍历
for(int i=0;i<arr.length;i++){
	System.out.println(arr[i]);
}
//foreach循环遍历
for(int x : arr){
	System.out.println(x);
}
           

数组的内存存放:

在数组中,存放的其实是里面元素的地址,通过这个地址可以找到这个元素,这就相当于统计的家庭地址一样,通过家庭地址可以找到家。

3.2 数组1 -【Java入门--疯狂Java讲义】

根据上图就可以很好的理解这一点数组arr存放的是元素e1的地址,e1、e2以及后面的元素是连续存放的,因为是同一种数据格式,e1、e2这些的空间就可以通过下标很好的推算出来,举个例子:

3.2 数组1 -【Java入门--疯狂Java讲义】

上面的图,小明距离讲台0.5米,而每张桌子之间0.5米,那么小红、小丽她们距离讲台的距离也就可以知道了。