Java基本类型数组初始化分静态和动态:静态初始化用{ }一步赋值,长度由元素个数决定;动态初始化用new指定长度,元素自动设为默认值(如int为0、boolean为false)。

Java 基本数据类型数组(如 int、double、boolean、char 等)初始化时,核心在于两点:一是明确数组对象在堆中被创建,二是清楚元素的默认值或显式赋值时机。它们不涉及对象实例化,但内存行为和初始化方式有固定规则。
静态初始化:一步写全值,长度自动确定
适合已知全部初始值的场景。编译器根据大括号内元素个数推断数组长度,所有元素直接设为你写的值。
-
int[] nums = {10, 20, 30};→ 长度为 3,元素分别是 10、20、30 -
double[] rates = new double[]{1.5, 2.75, 0.8};→ 等效写法,显式用new -
boolean[] flags = {true, false, true};→ 不会取默认值,完全按你写的来
动态初始化:先定长度,元素取系统默认值
只指定长度,JVM 在堆中分配空间后,自动为每个元素填入该类型的默认值——这是基本类型数组的关键特性。
-
int[] arr = new int[4];→ 元素全为 0 -
double[] data = new double[3];→ 元素全为 0.0 -
char[] chars = new char[2];→ 元素全为 '\u0000'(空字符) -
boolean[] opts = new boolean[5];→ 元素全为 false
声明与初始化分离:分两步完成
先声明引用变量,再单独创建并赋值。适用于逻辑需要延迟初始化或条件分支中创建数组的情况。
立即学习“Java免费学习笔记(深入)”;
-
int[] values;→ 此时values是null,未指向任何数组 -
values = new int[]{1, 2, 3};或values = new int[3];→ 后续才真正创建对象 - 注意:
int[] arr; arr = {1, 2, 3};是非法的,必须搭配new或在声明时使用花括号
常见误区提醒
别混淆“数组变量”和“数组对象”。int[] arr 这个 arr 只是栈上的一个引用,真正存储数据的是堆里的对象。动态初始化后即使没手动赋值,元素也已有确定值(不是随机垃圾值),这是 Java 安全性的体现。


















