大家好,本节课我们来讨论一下java中的数组,之前我们在学习变量的时候,发现变量可以帮助我们存储数据,但是遗憾的是,每个变量只能帮我们存储1个数据,比如说,int age = 10; 那么age只能存储一个年龄,如果说我想要存储全班同学的年龄应该怎么办呢?当然可以定义好多的变量来存储,不过这样的话肯定是不够好的,所以java语言为我们提供了数据来解决这个问题。
简单来说,数组就是用来存储一堆数据的集合,或者叫做容器,需要注意的是,数组本身是引用数据类型,而他里边的所能存储的数据,叫做数据的元素,数组只能用来存储相同类型的数据,数组的元素既可以是基本数据类型,也可以是引用数据类型。举个简单的例子来理解一下,我们可以把数据看做是一个啤酒箱子,啤酒箱子中只能装啤酒,这个啤酒就叫做数组中的元素,这个啤酒箱子本身是引用数据类型,而里边的啤酒,既可以是基本数据类型,也可以是引用数据类型。而这个数组还有一个特点,就是他能装多少个数据,叫做数组的长度,数组的长度一旦给定就不能修改。比如说你申请了一个10个长度的啤酒箱子,那么这个箱子就只能装10瓶啤酒,他的大小就不能修改了。而在java中数组的最大长度,是int的最大值,大概就是21亿多。这是由于我们后边会引入一个叫做索引的概念,实际就是啤酒箱子中啤酒的编号,我们通过编号可以找到每一个元素,而这个编号就是int类型的,所以编号的最大值也就是int的最大值,也就是数组的最大长度。
好了说完了数组的一个概述,接下来我们就来看看如何创建一个数组。java中创建数组的方式与两种,一种叫做动态初始化,一种叫做静态初始化,当然别被这么复杂的名称所吓倒,其实很简单。
数组的声明,我们使用数据类型[] 数组名,来代表一个数组,比如说,int [] arr 就是说有一个int类型的数据,数组中的元素类型是int, 数组的名字叫做arr.而这个中括号也是可以放在数组名的后边,也就是说
int[] arr int arr[]
这两种写法都是可以的。
上面的写法都是数组的声明,说白了就是写在= 的左边的语句,那么等号的右边写什么呢,这个时候就需要区分动态初始化还是静态初始化了。
1. 动态初始化,指的是指定数组的长度,由系统分配空间并赋初值。
格式: 数据类型[] 数组名 = new 数据类[数组长度];
如: int [] arr = new int[4];
这就是定义了一个4个长度的int类型的数组,要注意我们之前说过的特点,数组的长度一旦给定就无法改变,还有一点需要注意,这个数组定义完以后,数组中的元素是有初始值的,基本数据类型的初始值就是默认值,而int的默认值是0 ,所以这个四个长度的数组,数组中有4个长度,都是0. 而引用数据类型的默认这是null,也就是说如果你定义了一个String类型的5个长度的数组,里面的每个元素的值都是null.
这个数组定义完了以后,我们是可以对数组里边的元素做修改,并且可以获取数组中元素的值。这个时候我们就需要引入一个概念,叫做数组中的索引,其实索引指的就是数组中元素的编号,方便我们操作数组中的元素。java中数组的索引有一个很重要的特点,就是从0开始,所以一个存储 了4个元素的数,那么里面的索引值分别就是 0,1,2,3 ,要记住数组索引的最大值,就是数组的长度-1.
有了索引,我们就可以对数组中元素做操作了。比如我想对数组中的某个元素重新赋值,就可以使用
还是以上面的arr数组为例:
int []arr = new int[4];
System.out.println(arr[0]);//0,获取数组中第一个元素,索引是0
System.out.println(arr[3]);//0获取数组中最后一个元素,默认值是0
System.out.println(arr[4]);//报错,下标越界,索引最大值是3,超出了会报错
arr[3] = 120;//将数组中的第4个元素重新赋值为120
System.out.println(arr[3]);//120,运行时记得将上面报错的那行代码注释掉
ok,通过上面的代码我们应该不难看出对数组中元素的修改和获取的方法:
重新赋值:
数组[索引值] = 要赋的值;
获取值:
数组名[索引值];//获取数组中的元素
2. 静态初始化,静态初始化的方式是直接给定数组中的值,有系统根据数组中元素的个数,来确定数组的长度。
格式: 数据类型[] 数组名 = new 数组类型[]{元素1,元素2,元素3...};
比如,int [] arr1 = new int[]{1,2,3,4,5,6};
那么数组的长度就是6,arr1[3] 得到的值就是4,索引是3,代表的是第四个元素。
获取数组的长度我们可以使用数组名.length;的方式
System.out.println(arr1.length);//6
在定义数组的时候,new 和数据类型可以省略。
int[] arr2 = {4,6,67,5};//简略写法
在对数组重新赋值的时候,不能简写。
好了关于数组的定义,我们就说到这里。那么我们如何获得数组中的每一个值呢。
for(int i=0;i<arr.length;i++){
System.out.println(arr[i);
}
好了关于数组的一些简单知识点,我们就先介绍到这里。