Java数组声明核心在于区分基本类型与对象数组:前者存值且元素自动初始化为零值,后者存引用且元素初始为null需手动实例化;推荐int[]写法。

Java 中数组声明的核心在于区分数据类型:基本类型数组直接存值,对象数组存的是引用。两者语法一致,但初始化和使用逻辑完全不同。
基本类型数组的声明与初始化
基本类型数组(如 int[]、double[]、boolean[])声明后,元素默认被自动初始化为对应类型的零值(0、0.0、false)。
-
声明+动态初始化:先声明变量,再用 new 分配空间
int[] scores;
scores = new int[5]; // 元素自动为 0, 0, 0, 0, 0 -
声明+静态初始化:一步完成声明、创建、赋值
double[] prices = {19.9, 29.5, 35.0};
char[] flags = new char[]{'Y', 'N', 'M'}; - 注意:不能写成 int[] arr = new int[3]{1,2,3}; —— 长度与显式元素不可共存
对象数组的声明与初始化
对象数组(如 String[]、Student[]、MyDate[])声明后,数组本身被创建,但每个元素初始值为 null;必须单独实例化每个对象,否则调用方法会抛出 NullPointerException。
-
声明+分配数组空间(此时元素全为 null)
String[] names = new String[3]; // names[0]~names[2] 都是 null -
逐个实例化对象并赋值
names[0] = new String("Alice");
names[1] = "Bob"; // 字符串字面量自动转为 String 对象
names[2] = new String("Charlie"); - 自定义类同理:Student[] students = new Student[4];
后续需循环执行 students[i] = new Student(...);
声明语法的两种写法及推荐
Java 支持两种数组声明格式,语义完全等价:
立即学习“Java免费学习笔记(深入)”;
- int[] nums; —— 推荐写法,语义清晰,“int 数组”更贴近阅读习惯
- int nums[]; —— C 风格,易误解为“nums 是 int 类型的变量”,已不推荐在新代码中使用
无论哪种,都必须通过 new 创建实际数组对象后才能安全使用下标访问。


















