Java数组初始化后可通过索引直接赋值修改元素,长度固定但元素值可随时更新;索引须在[0, length-1]范围内,类型需兼容;引用类型数组既可替换引用,也可修改对象内部状态(String等不可变类除外);支持循环或条件逻辑批量修改;不可扩容,null对引用类型合法。

Java 中数组初始化后,可以直接通过索引赋值来动态修改指定位置的元素,这是数组的基本特性之一——支持随机访问和原地更新。
只要数组已创建(无论用哪种方式初始化),它的长度就固定了,但每个元素的值可以随时重新赋值。
直接用索引下标赋值
这是最常用、最直接的方式。语法为:数组名[索引] = 新值;
int[] arr = {1, 2, 3, 4, 5}; // 初始化
arr[2] = 99; // 修改索引 2 处的值(原为 3,现为 99)
System.out.println(arr[2]); // 输出 99注意:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 索引必须在
[0, length - 1]范围内,越界会抛出ArrayIndexOutOfBoundsException - 类型必须兼容,比如
String[]只能赋String或null
修改引用类型数组中的对象内容(非替换引用)
如果数组元素是引用类型(如 String[]、Person[]),有两种修改逻辑:
-
替换整个引用:
arr[i] = new Person("张三"); -
修改对象内部状态(前提是对象可变):
Person[] people = new Person[1]; people[0] = new Person("李四"); people[0].setName("王五"); // 修改对象属性,不改变数组中存储的引用
⚠️ 注意:String 是不可变类,所以 strArr[0] += "abc" 实际是生成新字符串并重新赋值给 strArr[0],本质仍是引用替换。
使用循环或条件逻辑批量/条件修改
适合根据规则更新多个位置:
int[] scores = {85, 92, 78, 96, 88};
// 给所有低于 90 的分数加 5 分
for (int i = 0; i < scores.length; i++) {
if (scores[i] < 90) {
scores[i] += 5;
}
}也可结合 if、switch 或方法封装做更复杂的逻辑判断后再赋值。
常见误区提醒
- 数组长度不可变,不能通过
arr[5] = 10来“扩容”——这会报错 -
null是合法值,对引用类型数组可显式设为arr[i] = null - 基本类型数组默认初始化为对应零值(如
int为0,boolean为false),之后均可覆盖
不复杂但容易忽略。

















