前言
数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同的语言的实现及处理也不尽相同。只要是写过程序的人都知道数组的价值和重要性,与链表一道,数组成为了基本数据结构。Java提供了很好的集合API和集合类如:ArrayList、HashMap,他们都是基于数组。
Java中的数组
同一个类型数据的集合。其实数组就是一个容器。运算的时候有很多数据参与运算,那么首先需要做的是什么。不是如何保存这些数据以便于后期的运算,那么数组就是一种用于储存数据的方式,能存数据的地方称之为容器,容器能装的东西就是数组的元素,数组可以装任意的数据,虽然可以装任意类型的数据。但是定义好的数组只能装一种元素,也就是数组一旦被定义,那么里边的储存的数据类型也就是确定的了。
数组的使用
第一步:声明数组:
在Java数组中声明一维数组的语法如下面所示:
数据类型[] 数组名;
或者
数组类型 数组名[];
以上两种方式都可以声明一个数组,数组名可以是任意的合法的变量名。
声明数组就是告诉计算机该数组是什么类型的。例如:
int[] scores; //储存学生的成绩,类型为整型
double height[]; //储存学生的身高,类型为浮点型
String[] names; //储存学的的名字,类型为字符串型
第二步:分配空间
第一步声明了数组,只能得到一个代表数组的变量,并没有为数组分配内存空间,不能使用。因此我们要为数组分配内存空间,这样的数组的每一个元素才有一个空间进行存储。
简单的来说,分配空间就是要告诉计算机在内存中为数组分配了几个连续的空间来存储数据。在Java中可以使用new关键字来给数组分配空间。
语法
数组名 = new 数据类型[数组长度];
其中,数组的长度就是数组中能存放的元素个数,显然应该为大于0的整数。例如:
scores = new int[30];//长度为30的整形数组
height = new double[30];//长度为30的浮点型数组
names = new String[30];//长度为30的字符串型数组
其实,我们可以把上面的两个步骤合并,就是声明数组的同时就给它分配空间,语法如下:
数据类型[] 数组名 = new 数据类型[数组长度];
例如:
int[] scores = new int[30];
注意:一旦声明数组的大小就不可以再次修改了。
第三步:赋值
分配空间之后就可以想数组里放数据了。数组中的每一个元素都是通过下标来访问的语法如下:
数组名[下标值]
例如向上的int类型scores数组中存放数据
scores[0]=88;
scores[1]=66;
scores[2]=99;
....
除了这一种方式,Java还提供另外一种直接创建数组的方式,它将声明数组、分配空间和赋值合并完成,语法如下所示:
数据类型[] 数组名 = {值1,值2,值3,......,值n}
例如,使用这种方式来创建scores数组
int[] scores = {60,70,98,90,76};//创建一个长度为5的数组scores,同时,它还等价于下面的代码。
int[] scores = new int[]{60,70,98,90,76};
完成上面的三步,我们的数组就成型了。接下就是第四步:对数据进行处理。
第四步:对数据进行处理
举例我们用上面的scores数组计算5个学生的平均分,直接上代码:
/**
* 使用数组计算平均分
*/
public static void main(String[]args){
int[] scores = new int[5];//成绩数组以及长度
int sum = 0; //成绩综合
Scanner input = new Scanner(System.in);
System.out.println("请输入5位学员的成绩:");
for(int i = 0;i< scores.length;i++){
scores[i] = input.nextInt();
sum = sum+scores[i]; //成绩累加
}
//计算并输出平均分
System.out.println("学员平均分是:"+(double)sum/scores.length);
}
在循环中,循环变量i从0开始递增直到数组的最大长度scores.length。因此,每次循环i加1,实现数组的每一个元素和的累加。
总结
Java的数组,我的理解就那么多。Java中的数组,其实还有一个多维数组,我下一篇博客写多维数组和小伙伴们分享一下我对多维数组的理解。