Java一维数组初始化只有静态和动态两种本质方式:静态初始化在声明时直接赋值,如int[] nums = {1, 2, 3};动态初始化用new分配空间,如double[] temps = new double[7]。

Java 一维数组初始化就两种本质方式:静态初始化(声明时直接给值)和动态初始化(先用 new 分配空间)。其他写法都是它们的语法变体,理解底层逻辑比死记写法更重要。
静态初始化:适合已知全部元素的场景
编译期就能确定内容,代码简洁、语义清晰。JVM 自动推导类型和长度,不能拆成两步写。
-
推荐写法:
int[] nums = {1, 2, 3};—— 最常用,仅限声明语句中使用 -
等价写法:
String[] names = new String[]{"Alice", "Bob"};—— 显式 new,可用于方法传参或返回值 -
常见错误:
int[] arr; arr = {1, 2, 3};编译失败,因为花括号初始化只能出现在声明行
动态初始化:适合运行时确定长度的场景
先申请内存空间,长度可为变量,元素自动设默认值。后续再按需赋值,灵活性高。
-
基础形式:
double[] temps = new double[7];→ 创建 7 个0.0 -
引用类型注意:
String[] words = new String[3];→ 每个元素是null,访问前必须检查或显式赋值 -
配合循环赋值:
for (int i = 0; i < data.length; i++) data[i] = i * 2;
声明与创建分离:用于延迟初始化或参数传递
变量声明和数组对象创建不在同一行,常见于条件分支、方法入参或构造逻辑中。
立即学习“Java免费学习笔记(深入)”;
-
典型结构:
int[] buffer; ... if (need) buffer = new int[100]; -
final 数组注意:
final int[] a = new int[5];合法,a 的引用不可变,但a[0] = 1仍可执行 -
避免空指针:使用前务必确认是否已完成
new,否则调用length或访问元素会抛NullPointerException
实用技巧与避坑提醒
真正影响开发效率的,往往不是“怎么写”,而是“为什么这么写”。
-
打印数组别用
System.out.println(arr)→ 输出哈希值;改用Arrays.toString(arr) -
下标永远从 0 开始 → 长度为
n的数组,合法索引是0到n-1;arr[arr.length]必然越界 -
数组长度固定 → 没有 add/remove,扩容需手动新建更大数组并复制,这点和
ArrayList有本质区别 -
默认值要心中有数:
int是0,boolean是false,String[]元素是null


















