什么是数组?为何要使用数组?数组与变量有何区别?
从我的理解来说,数组实际上就是相同类型的很多变量放在同一个空间内,这个空间也就是数组,我们都知道,声明一个变量实际上就是在内存空间划出一块合适的空间,而声明一个数组就是在内存空间划出一串连续的空间。因此,在有很多相同类型的变量的时候,我们就可以通过数组进行存储,这样可以更加高效的找到所需要的变量。
一、数组有哪些要素构成?
1.标识符
2.数组元素
3.元素下标(从0开始)
4.元素类型
二、数组特点
特点:数组中的所有元素必须属于相同的数据类型。
我们通过一个例子来看一下:例:下列哪组数据能存储在数组中?数组的类型是什么?
1)“刘星”,“夏雨”,“夏雪”
2)8,98,“c”,23
3)98.1,341.2,34.3
分析:1)中都是String类型;2)有int类型、char类型;3)都是double类型,根据 数组的特点可以判断出1和3是可以存储在数组之中的,而2由于类型不同,无法存储在数组之中。
三、使用数组
根据上述图片可以看出,使用数组的基本步骤可以分为四步,接下来我们来看看每步的一些细节与注意事项。
1)声明数组
语法格式: 数据变量[ ] 数组名;
在我的理解中,这实际上就是在栈空间中进行了定义,但是没有在堆内存中开辟空间,因此是没有具体的值和长度。
2)分配空间
语法格式:数据变量[ ] 数组名 = new 数据变量[ 数组元素长度 ];
这里实际上就是在堆内存中开辟一个空间,里面存放的数据就是分配空间中定义的元素长度。这里的int就是整个arr数组的类型,也就是说arr数组中的元素都是int类型,arr就是标识符,也就是常说的数组名,这里的new实际上就是分配空间的一种写法,与之前Scanner键盘录入的时候 Scanner sc = new Scanner(System.in)中的new相似,[5]就是代表数组arr中的元素共有5个,这里注意元素下标是从0开始的,也就是说这5个元素分别是arr[0]、arr[1]、arr[2]、arr[3]、arr[4],而不是从1到5,这里需要注意。
3)赋值
①逐个赋值
语法格式:数组名[元素下标] = 数据;
例:arr[0] = 5;
arr[1] = 6;
②声明+分配空间的时候进行赋值
语法格式:数据类型[ ] 数组名 = new 数据类型[ ]{a,b,c,d,..........};
简化:数据类型[ ] 数组名 = {a,b,c,d,..........};
①其实很简单,和变量赋值基本一样,唯一需要关注的就是下标;②中就有很多方面需要注意,这里我们来看一下。首先,上面我们说过在分配空间的时候,会对数组长度进行定义,而数组中的数值实际上是系统默认的值,而在②中,我们注意不要对数组的长度进行赋值,因为在后面的{ }中的元素有很多,因此,我们在进行赋值的时候,系统会根据元素而自动对数组的长度进行分配,一旦我们在赋值的时候,定义数组长度的话,就会报错。
三、创建数组中的一些常见错误
1)没有写明数组的长度
2)数组下标越界 (ArrayIndexOutOfBoundsException)
这里创建的数组长度为2,我们上述有讲过,数组元素的下标是从0开始,也就是说当长度为2时,实际上里面的数组元素分别为scores[0]和scores[1]。
3)创建数组并赋值的方式必须在一条语句中完成