在前面的文章中,我们选择了各种数据类型,这些数据类型操作的是单个的数据。有时候,我们需要对数据类型相同,用途相近的一组数据集中进行处理,比如处理一个班级所有学员的考试成绩等。这时候我们就要用到数组。下面看这样一个问题,这样我们能更直观的了解数组。
java考试结束后,老师给张浩分配了一项任务,让他计算全班学生(30人)的平均分。
面对这样的问题,按照之前的思路我们要定义30个变量,这样的方法肯定是不合理的,这时候我们就用到了数组啦。在Java中数组就是一个变量,用于将相同数据类型的数据存储在存储单元中。数组中的每一个元素都属于同一数据类型。我们知道,String类型的变量可以存储一个字符串,而数组也是一个变量,String类型的数组可以存储一组字符串。那么该如何使用数组呢,下面
上海java培训机构将介绍使用数组的步骤:
(1)声明数组
语法一
数据类型【】数组名;
或者
数据类型 数组名【】;
以上两种方式都可以声明一个数组,数组名可以是任意合法的变量名。
声明数组就是告诉计算机该数组中数据的类型是什么,例如:
int[] scores; //存储学生成绩,类型为整型
double height[]; //存储学生身高,类型为浮点型
String[] names; //存储学生姓名,类型为字符串型
(2)分配空间
声明了数组,只是得到了一个代表数组的变量,并没有为数组分配内存空间,不能使用。因此要为数组分配内存空间,这样数组的每一个元素才有一个空间进行存储。简单地说,分配空间就是要告诉计算机在内存中为它分配了几个连续的空间来存储数据。在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];
一旦声明了数组的大小就不能再修改。
(3)赋值
分配空间后就可以向数组中放数据了。数组中的每一个元素都是通过下标来访问的,语法如下:
语法四
数组名【下标值】;
例如向scores数组中存放数据。
scores【0】=89;
scores【1】=89;
scores【2】=89;
.......
在这里我们再看本篇开端的问题,张浩计算30个同学的平均分,我们用循环变量表示下标,从而利用循环给数组赋值。
Scanner input = new Scanner(System.in);
for(int i =0; i<30; i ++;){
scores[i] = input.nextInt(); //从控制台接受键盘输入进行循环赋值
}
在Java中还提供了另外一种直接创建数组的方式,它将声明数组,分配空间和赋值合并完成,语法如下:
语法五
数据类型【】数组名={值1,值2,值3,.......,值n};
例如,使用这种方式来创建scores数组。
int[] scores={60,70,80,90,76}; //创建一个长度为5的数组scores
同时等加与
int[] scores = new int[]{
60,70,80,90,76
};
(4)对数据进行处理
现在我们真正用代码实现开篇提出的问题,代码如下:
import java.util.Scanner;
public class ArrayDemo{
piblic 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,实现数组的每个元素和的累加。
本文转载自上海计算机培训官网:http://www.shaccp.net/base/java/613.html