java数组是存储同类型数据的基础容器,学生成绩管理是其典型应用;声明需区分声明与创建,推荐int[] scores; scores = new int[5];遍历可用普通for、增强for或while,依是否需下标选择。

Java 数组是存储同类型数据的最基础容器,学生成绩管理正是其典型应用场景——用一个 int[] 或 double[] 就能集中保存多个学生的分数,后续统计、查找、排序都以此为起点。
声明数组:明确类型、长度与初始化方式
声明数组需区分「声明」和「创建」两个动作。常见写法有三种,本质相同但风格不同:
-
推荐写法(清晰分离声明与创建):
int[] scores;声明引用变量,scores = new int[5];创建含 5 个默认值为 0 的整数数组 -
一步完成(适合已知初始值):
double[] grades = {89.5, 92.0, 78.5, 96.0, 84.5};编译器自动推断长度为 5 -
不推荐写法:
int scores[];虽语法合法,但弱化了“数组是引用类型”的语义,易与 C 风格混淆
注意:数组一旦创建,长度不可变;未显式赋值的元素会按类型取默认值(int 为 0,double 为 0.0,String 为 null)。
遍历数组:for、增强 for 与 while 各有适用场景
遍历是读取每个成绩的基础操作,选择哪种方式取决于是否需要下标或仅需数值:
-
普通 for 循环(需下标时首选):统计不及格人数、找出最高分位置、修改特定索引成绩等。
for (int i = 0; i -
增强 for 循环(仅需数值时更简洁):打印全部成绩、求总分、判断是否存在某分数。
for (double grade : grades) { sum += grade; }—— 不能直接获取当前索引,也不支持修改原数组元素(除非是对象数组且调用对象方法) -
while 循环(适合条件提前终止):查找第一个满分学生位置:
int i = 0; while (i
结合实际:用数组实现简易成绩统计功能
以 5 名学生成绩为例,快速构建可运行逻辑:
- 声明并初始化:
int[] scores = {85, 92, 76, 88, 94}; - 计算平均分:
int sum = 0; for (int s : scores) sum += s; double avg = (double) sum / scores.length; - 找出最高分:
int max = scores[0]; for (int i = 1; i max) max = scores[i]; - 输出不及格名单(假设下标代表学号):
for (int i = 0; i
这段代码无复杂类或集合,却已覆盖成绩录入、分析、反馈的核心链路,是理解后续引入 ArrayList、Stream 或面向对象设计的坚实起点。
常见陷阱提醒:避免空指针与越界错误
初学者常因忽略数组生命周期而出错:
-
未初始化就使用:
int[] arr; System.out.println(arr[0]);→ 抛出NullPointerException,因为arr是null -
下标越界:
int[] a = new int[3]; a[3] = 10;→ 抛出ArrayIndexOutOfBoundsException(合法索引是 0~2) -
混淆长度与最大索引:误写
for (int i = 0; i ,末尾多访问一次导致异常 -
字符串数组误判空值:
String[] names = new String[3];中每个元素默认为null,不是空字符串"",判空需用names[i] == null || names[i].isEmpty()
这些错误在编译期无法发现,但运行时立即暴露,养成检查 != null 和 的习惯能大幅提升稳定性。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











