数组 【初时堆的概念】
变量的数据类型
基本数据类型 byte short int long float double char boolean
引用数据类型 数组、类(String是类的一种)、接口、枚举…
-
理解数组的作用
变量在使用时它只能使用基本数据类型,存储值只能存储简单的数据/单一的数据如果想同时存储更多的数据,它无法实现,同样关于变量的操作比较简单,我们需要寻找一种能够同时存储更多数据的,并且操作更加丰富的数据类型。 -
掌握数组的定义
数组 一组数据 数据的组合体
有限的相同类型的变量的组合 就被称为数组
数组中的变量又被称为分量或者元素
数组是一种引用数据类型 他的数据是储存在JVM(虚拟机)中的堆中的 基本数据类型一般都是储存在 栈 中的 -
掌握数组的基本使用
与变量组成基本相同
变量是由 数据类型 变量名 变量值组成的
数据类型 变量名
变量名 = 变量值
数据类型 变量名 = 变量值
数组也是由 数据类型(还是那些基本数据类型) 数组名(也就是变量名) 数组长度(里面有多少个变量) 数组元素(元素=变量 有多少个变量)
数组的长度一旦定义就不能更改了
数组元素(变量)不赋值也有初始值
byte short int long :0 float double:0.0 boolean:false char:\U0000 一个空格 String等引用数据类型默认值为 null (表示没有引用)
数组的下标(索引)
数据类型[] 数组名 = new 数据类型[数组长度] 数据类型[] 数组名 = {元素1,元素2,元素3,…}
获取数组中的所有数据也可以被称为遍历数组(遍历)
for(int i = 0; i < 数组名.length; i++) {
System.out.println(scores[i]);
}
增强for循环(foreach) 迭代器
for(数据类型 数组名:数组名s){
System.out.print(数组名);
}
4. 掌握数组的常用操作
(1)求一个班的成绩总和与平均分
Scanner input = new Scanner(System.in);
// 存储班级成绩(利用数组)
double[] scores = new double[5];
for(int i = 0; i < scores.length; i++) {
System.out.print(“请输入第”+(i+1)+“名同学的成绩:”);
scores[i] = input.nextDouble();
}
// 对班级成绩进行计算求和 求平均分
// 遍历数组 将所有成绩进行累加
double sum = 0;
for(double score : scores) {
// 累加求和
sum += score;
}
// 平均分
double avg = sum / scores.length;
System.out.println(“班级的总成绩为:”+sum);
System.out.println(“班级的平均分为:”+avg);
(2)求最大/小值
使用键盘录入输入5位学生的成绩,然后计算最高分和最低分
Scanner input = new Scanner(System.in);
// 存储成绩
double[] scores = new double[5];
for(int i = 0; i < scores.length; i++) {
System.out.print(“请输入第”+(i+1)+“位学生成绩:”);
scores[i] = input.nextDouble();
}
// 计算最高分 90 98 70 60 10
// 打擂台 找一个守擂的
double max = scores[0]; // 我认为最强的
double min = scores[0];
for(int i = 1; i < scores.length; i++) {
// 打擂台比较 只要发现有比最大值还大的
if(max < scores[i]) {
// 更换变量的值
max = scores[i];
}
if(min > scores[i]) {
min = scores[i];
}
}
System.out.println(“最高分:”+max);
System.out.println(“最低分:”+min);
(3)通过数组进行排序-插入新值保持顺序
// 存储学员成绩
int[] scores = {99,85,82,63,60,0};
// 输入一个新成绩
Scanner input = new Scanner(System.in);
System.out.print(“请输入要插入的成绩:”);
int num = input.nextInt();
// 将它插入成绩序列,并保持降序
// 1.找到可以插入的位置
// 遍历数组 查找是否有比输入的数值小的元素(降序)
int i = 0;
for(; i < scores.length; i++) {
if(num > scores[i]) {
// 扎到要插入的位置 就可以停下来了
break;
}
}
System.out.println(“新成绩未来插入的位置是:”+i);
// 2.插入新值
// 移位 从后往前 将数值进行后移
for(int j = scores.length - 1; j > i; j–) {
scores[j] = scores[j-1];
}
// 将新值进行赋值
scores[i] = num;
System.out.println(“插入新值之后的结果为:”+Arrays.toString(scores));
(4)猜数游戏
// 存储数列的数据
int[] nums = {8,4,2,1,23,344,12};
// 1.循环输出数列的所有值
for(int num : nums) {
System.out.print(num+" “);
}
System.out.println(”\n-------------------------");
// 2.求数列中所有数值的和
int sum = 0;
for(int num : nums) {
// 累加求和
sum += num;
}
System.out.println(“数列的和为:”+sum);
System.out.println("-------------------------");
// 3.猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
Scanner input = new Scanner(System.in);
System.out.println(“请输入一个整数:”);
int inputNum = input.nextInt();
// 遍历数组 查看是否有相同的数值
// 设立标记(日后一个比较不错的思路方案)
// int / boolean
boolean flag = false; // 假定不存在此值
for(int num : nums) {
if(inputNum == num) {
flag = true; // 更改标记
break;
}
}
// 判断标记
if(flag) {
System.out.println(“包含此值!”);
}else {
System.out.println(“不包含此值!”);
}