第4周 数组的概念和常见操作
1. 数组的基本概念
什么是数组?
- 数组就像是一个可以装多个相同类型数据的"盒子"
- 这个"盒子"有固定大小(创建后不能改变)
- 每个"格子"都有一个编号(索引),从0开始
为什么要用数组? 比如要存储5个学生的成绩,不用数组的话你需要:
int score1 = 85;
int score2 = 90;
// ... 要定义5个变量
用数组只需要:
int[] scores = {85, 90, 78, 92, 88};
2. 创建数组的三种方式
// 方式1:先声明大小,后赋值
int[] arr1 = new int[5]; // 创建能放5个整数的数组
arr1[0] = 10; // 给第1个位置赋值(索引0)// 方式2:声明时直接赋值
int[] arr2 = {10, 20, 30, 40, 50};// 方式3:另一种直接赋值写法
int[] arr3 = new int[]{10, 20, 30, 40, 50};
3. 遍历数组(使用for循环)
int[] scores = {85, 90, 78, 92, 88};// 普通for循环
for(int i = 0; i < scores.length; i++) {System.out.println("第" + (i+1) + "个学生成绩:" + scores[i]);
}// 增强for循环(更简单)
for(int score : scores) {System.out.println("学生成绩:" + score);
}
练习1:存储5个学生成绩并求平均分
public class Main {public static void main(String[] args) {int[] scores = {85, 90, 78, 92, 88};int sum = 0;// 计算总分for(int i = 0; i < scores.length; i++) {sum += scores[i]; // 累加每个成绩}// 计算平均分(注意要转成double)double average = (double)sum / scores.length;System.out.println("平均分是:" + average);}
}
练习2:数组元素逆序存放
public class Main {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};// 逆序算法:交换首尾元素for(int i = 0; i < arr.length / 2; i++) {int temp = arr[i]; // 临时保存前面的元素arr[i] = arr[arr.length - 1 - i]; // 把后面的放到前面arr[arr.length - 1 - i] = temp; // 把前面的放到后面}// 输出结果System.out.print("逆序后的数组:");for(int num : arr) {System.out.print(num + " ");}}
}
练习3:冒泡排序算法
public class Main {public static void main(String[] args) {int[] arr = {64, 34, 25, 12, 22, 11, 90};// 冒泡排序for(int i = 0; i < arr.length - 1; i++) {for(int j = 0; j < arr.length - 1 - i; j++) {if(arr[j] > arr[j + 1]) { // 如果前一个比后一个大// 交换它们int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}// 输出排序结果System.out.print("排序后的数组:");for(int num : arr) {System.out.print(num + " ");}}
}
常见问题解答
Q: 为什么数组索引从0开始?
A: 因为计算机中内存地址的计算方式,第一个元素的位置就是起始地址+0
Q: 数组越界是什么意思?
A: 比如你创建了长度为5的数组,却尝试访问arr,就会报错(有效索引是0-4)
Q: 如何获取数组长度?
A: 使用
数组名.length
,例如scores.length
小技巧
- 使用
Arrays.toString()
快速打印数组:
import java.util.Arrays;int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 3]
- 数组初始化默认值:
- int: 0
- double: 0.0
- boolean: false
- 对象: null
扩展练习
- 找出数组中的最大值和最小值
- 查找数组中是否存在某个数字
- 复制一个数组到另一个数组
记住,学习编程最重要的是多动手实践!试着把这些代码自己敲一遍,然后尝试修改它们来实现不同的功能。遇到问题随时可以问哦!