先来认识一下什么数组
数组就是一个容器,用来存一批同种类型的数据的。
比如:想要存储 20,10,80,60,90 这些数据。 我们可以把代码写成这样
int[] array = {20,10,80,60,90};
比如:想要存储 “牛二“,“西门“,“全蛋“ 这些数据。我们可以把代码写成这样
String[] names = {"牛二", "西门", "全蛋"};
有变量,为什么还要有数组呢? 比如,我们要做一个点名器
一对比我们发现数组的写法比变量的写法更加简洁,所以我们可以得出一个结论
结论:遇到批量数据的存储和操作时,数组比变量更适合
各位同学,我们已经知道数组是用来干什么的。那么如何使用Java语言写一个数组呢?这里就需要学习一下数组的初始化格式。
数组有两种初始化的方式,一种是静态初始化、一种是动态初始化。我们先用静态初始化来学习数组的操作。
所谓静态初始化指的是:在定义数组时直接给数组中的数据赋值。
1. 静态初始化标准格式:
数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3};
按照格式定义int类型、double类型数组
//定义数组,用来存储多个年龄 int[] ages = new int[]{12, 24, 36} //定义数组,用来存储多个成绩 double[] scores = new double[]{89.9, 99.5, 59.5, 88.0};
2. 静态初始化简化格式
Java语言的设计者为了简化定义数组的写法,还为静态初始化提供了一种简化写法
数据类型[] 变量名 = {元素1,元素2,元素3};
使用简化格式定义int类型、double类型数组
//定义数组,用来存储多个年龄 int[] ages = {12, 24, 36} //定义数组,用来存储多个成绩 double[] scores = {89.9, 99.5, 59.5, 88.0};
3. 注意哟!!
定义数组时, 数据类型[] 数组名
也可写成 数据类型 数组名[]
//以下两种写法是等价的。但是建议大家用第一种,因为这种写法更加普遍 int[] ages = {12, 24, 36}; int ages[] = {12, 24, 36}
4. 数组在计算机中的基本原理
我们知道数组是怎么定义的之后,那么接下来看一下数组在计算机中的基本原理。
我们以int[] ages = {12,24,36};
这句话为例,看一下这句话到底在计算机中做了那些事情。
首先,左边int[] ages
表示定义了一个数组类型的变量,变量名叫ages
其次,右边{12,24,36}
表示创建一个数组对象,你完全可以把它理解成一个能装数据的东西。这个对象在内存中会有一个地址值[I@4c873330
,每次创建一个数组对象都会有不同的地址值。
然后,把右边的地址值[I@4c873330
赋值给左边的ages变量
所以,ages变量就可以通过地址值,找到数组这个东西。
各位同学,通过刚才的学习,我们知道数组是用来存储数据的。那么数组中存储的数据又如何访问呢?这里所说的访问,意思就是获取数组中数据的值、或者给数组中的数据赋值。
这里先给大家统一几个概念,数组中存储的数据我们叫做元素;而且数组中的每一个元素都有一个编号与之对应,我们把这个编号叫做索引,这个索引是从0依次递增的整数。如下图所示
//数组名可以找到数组对象的地址,再通过索引就可以定位到具体的元素了 数组名[索引]
接下来用代码来演示一下
//索引: 0 1 2 int[] arr = {12, 24, 36}; // 1、访问数组的全部数据 System.out.println(arr[0]); //12 System.out.println(arr[1]); //24 System.out.println(arr[2]); //36 //下面代码没有3索引,会出现ArrayIndexOutOfBoundsException 索引越界异常 //S