定义:
数组存储相同数据类型的一组数据。
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
数组的基本要素:
·标识符(数组名称):是一个变量名,遵循驼峰命名规则
·数组元素
·元素类型:数组中所有元素的数据类型相同
·元素下标,从0开始,到数组长度-1
注意:数组长度固定不变,避免数组越界
思考:下列哪组数据能存储在数组中?数组的类型是什么?
·“刘星”,“夏雨”,“夏雪”
·8,98,“c”,23
·98.1,342.1,34.2
如何使用数组?
使用数组四步走:
1.声明数组 int[] a;
2.分配空间 a = new int[5];
3.赋值 a[0] = 8;
4.处理数据 a[0] = a[0]*10;
说明:506班上厕所
数组声明方法:
1.和声明一个变量类似,可以先声明数组,再分配空间:
数据类型[] 数组名;
数组名 = new 数据类型[大小];
2.也可以声明数组的同时分配空间
·数据类型[] 数组名 = new 数据类型[大小];
3.边声明边赋值
·简写:int[] scores = {100,90,80};
·完整格式:int[] scores2 = new int[]{100,90,80} ;//切记,此时中括号中不能写长度
注:数组元素根据类型不同,有不同的初始值
int类型的数组,系统默认赋值为0。
String类型的数组,系统默认赋值为null。
double类型的数组,系统默认赋值为0.0。
课堂练习:
声明一个数组,用于存储从控制台接受的30个学生的成绩并学生成绩的平均值。
参考代码:
int[] scores = new int[30];
Scanner input = new Scanner(System.in);
int sums = 0;//求和变量
for(int i = 0;i<30;i++){
System.out.println("请输入第"+(i+1)+"个同学的成绩");
scores[i] = input.nextInt();//将控制台输入的值赋给数组
sums+=scores[i];//数组累加求和
}
System.out.println(sums/30);
代码改进:如果要求50个学生的平均值,代码需要修改的地方有三处,不够灵活。使用数组长度(数组名.length)代替固定值。
int[] scores = new int[30];
Scanner input = new Scanner(System.in);
int sums = 0;//求和变量
for(int i = 0;i<scores.length;i++){
System.out.println("请输入第"+(i+1)+"个同学的成绩");
scores[i] = input.nextInt();//将控制台输入的值赋给数组
sums+=scores[i];//数组累加求和
}
System.out.println(sums/scores.length);
增强for循环(foreach循环)
适用于可迭代对象
语法格式:
for(数据类型 变量名:被迭代对象){
//代码块
}
示例:
int[] scores = new int[]{12,23,21,43};
int sum = 0;
for(int score:scores){
sum+=score;//数组元素累加求和
}
System.out.println(sum/scores.length);
数组常见错误1:
public class ErrorDemo1 {
public static void main(String[] args) {
int[] score = new int[];
score[0] = 89;
score[1] = 63;
System.out.println(score[0]);
}
}
数组常见错误2:
int[] score = new int[2];
score[0] = 90;
score[1] = 85;
score[2] = 65;
System.out.println(score[2]);
数组常见错误3:
int[] score = new int[5];
score = {60,80,90,70,85};
int[] score2;
score2 = {60,80,90,70,85};
·创建数组并赋值必须在一条语句中完成。
数组常见错误4:
public class ErrorDemo {
public static void main(String[] args) {
int[] scores = new int[6];
for(int score : scores){
score = 9;
}
System.out.println(scores[0]);
}
}
foreach是用来遍历数组(取值)的,不能用来对数组赋值
数组练习:
有一个数列:8,4,2,1,23,344,12
·循环输出数列的值
·求数列中所有数值的和
·猜数游戏:从键盘中国任意输入一个数据,判断数据中是否包含此数
参考代码:
public class ArraysDemo {
public static void main(String[] args) {
int sum = 0;//定义求和变量
//定义数组
int[] scores = new int[]{8,4,2,1,23,344,12};
Scanner sc = new Scanner(System.in);
//循环输出值并求和
for(int score : scores){
System.out.println(score);
sum += score;
}
System.out.println("scores数组元素的和为"+sum);
//猜数游戏
System.out.println("请输入一个数字:");
int number = sc.nextInt();
for(int score : scores){
//在遍历的过程中对比数组元素和输入值是否相等
if(number == score){
System.out.println("包含此数字");
return;
}
}
System.out.println("不包含此数字");
}
}