java中声明并动态分配一维数组需先声明引用变量再用new分配堆空间,如int[] arr = new int[n];长度须为非负整数,创建后长度不可变,基本类型元素自动初始化默认值,引用类型元素默认为null。

在 Java 中声明并动态分配一维数组空间,核心是“先声明变量,再用 new 创建实际对象”。数组在 Java 中是引用类型,声明不等于分配内存,必须显式使用 new 指定长度才能真正分配堆空间。
声明数组变量(不分配空间)
语法格式为:类型[] 数组名; 或 类型 数组名[];(推荐前者)。此时只是定义了一个引用变量,值为 null,尚未指向任何数组对象。
例如:
-
int[] arr;—— 声明一个 int 类型数组的引用,arr == null -
String[] names;—— 声明一个 String 数组引用,未初始化
动态分配空间(运行时确定长度)
使用 new 类型[长度] 在运行时创建数组对象。长度可以是变量、表达式或方法返回值,只要结果是非负整数即可。
例如:
-
int n = 5; int[] arr = new int[n];—— 分配含 5 个 int 的数组,元素默认为 0 -
String[] data = new String[getArraySize()];—— 长度由方法动态决定 -
double[] scores = new double[input.nextInt()];—— 从用户输入读取长度
声明与分配可合并写(常用写法)
多数情况下直接一步完成:声明变量 + new 分配 + 赋值。这是最简洁、最安全的做法。
例如:
char[] buffer = new char[1024];boolean[] flags = new boolean[100]; // 默认全为 falseObject[] items = new Object[5]; // 元素默认为 null
注意点
动态分配时需留意:
- 长度必须是非负整数;若为负数,运行时抛出
NegativeArraySizeException - 数组一旦创建,长度不可变;如需“扩容”,需新建更大数组并复制元素(如用
Arrays.copyOf()) - 基本类型数组元素自动初始化为默认值(
0、false、0.0等),引用类型数组元素默认为null
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











