
new int[] {} 表示创建并返回一个长度为 0 的空整型数组,花括号内无元素,不引用任何已有内存对象,而是直接在堆上分配一个新但为空的数组实例。
java中花括号 `{}` 在数组初始化中的含义与用法详解:`new int[] {}` 表示创建并返回一个长度为 0 的空整型数组,花括号内无元素,不引用任何已有内存对象,而是直接在堆上分配一个新但为空的数组实例。
在 Java 中,{} 出现在 new int[] { ... } 语法中时,属于数组初始化器(array initializer),用于在声明或创建数组的同时,直接指定其初始元素。其语义取决于上下文:
- ✅
new int[] { 1, 2, 3 }→ 创建长度为 3 的数组,元素依次为1,2,3; - ✅
new int[] {}→ 创建长度为 0 的空数组(empty array),即new int[0]的等价写法; - ❌ 单独的
{}(无new Type[]前缀)不是合法表达式,不能独立使用。
回到你的代码示例:
return new int[] {};这行并非“引用某个已存在的内存块”,而是显式构造一个新的、长度为 0 的 int[] 对象,并在堆上为其分配内存(尽管不存储任何元素)。该数组是真实存在的对象:
-
array.length == 0成立; -
array != null成立(区别于return null); - 可安全调用
.length、参与Arrays.toString()等操作,不会触发NullPointerException。
⚠️ 注意事项:
立即学习“Java免费学习笔记(深入)”;
-
空数组 ≠
null:在 API 设计中,返回空数组比返回null更安全,能避免调用方因未判空而崩溃; -
性能无差异:
new int[] {}和new int[0]编译后字节码一致,JVM 通常会对空数组做轻量优化; -
不可变长度:数组长度在创建后即固定,
{}仅定义初始状态,后续无法通过此语法扩容。
✅ 推荐实践:当方法契约要求返回 int[] 但无有效结果时(如本题中未找到两数之和),应优先返回 new int[0] 或 new int[] {},而非 null。例如:
public int[] findPair(int[] arr, int sum) {
// ... search logic
if (notFound) {
return new int[] {}; // 清晰、安全、符合约定
}
return new int[]{i, j};
}总结:{} 在 new Type[] {...} 中是数组初始化语法的一部分,代表元素列表——空列表即生成空数组。它简洁、明确、类型安全,是 Java 中表达“无结果但有结构”的标准方式。


















