最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java 数组声明与初始化的避坑指南
时间:2026-06-18 08:42:58 编辑:袖梨 来源:一聚教程网
Java数组应声明为int[] arr而非int arr[],优先使用{ }静态初始化或new动态初始化,避免悬空声明导致NullPointerException。
Java数组看似简单,但声明和初始化稍有不慎,就容易引发NullPointerException、越界异常或语义混淆。关键不是“能跑通就行”,而是选对写法,让代码一眼可读、不易出错、便于维护。
声明必须用 int[] arr,别写成 int arr[]
这是最基础也最容易被忽视的一点。推荐写法是 int[] numbers,它明确表达“numbers 是一个 int 数组”;而 int numbers[] 是 C 风格遗留写法,容易让人误以为 “numbers 是 int 类型,加了 [] 修饰”,尤其在多维数组如 int[][] matrix 和 int matrix[][] 对比时,后者语义模糊、易出错。
- 正确:
String[] names、byte[][] data - 不推荐:
String names[]、byte data[][]
已知全部元素,直接用 { } 静态初始化
如果编译期就能确定所有值——比如状态码、配置项、测试用例数据——就该用最简洁、最安全的方式:
int[] status = {200, 401, 403, 500};String[] roles = {"admin", "editor", "viewer"};
这种写法由编译器自动推断长度,不会写错大小;也不建议混用 new int[]{...},除非要作为匿名数组传参(例如 method(new String[]{"a","b"}))。
立即学习“Java免费学习笔记(深入)”;
只知长度不知内容,用 new 动态初始化
适用于缓冲区、待计算结果、外部数据加载前的占位结构:
-
byte[] buffer = new byte[8192];(默认全 0) -
String[] users = new String[100];(默认全 null)
注意:动态初始化后长度固定不可变;基本类型元素自动设为 0/false/0.0/'u0000',引用类型为 null,无需再写循环赋默认值。
别留空悬引用:声明即初始化,或确保首次使用前已实例化
写 int[] arr; 然后很久不赋值,是常见隐患。此时 arr 为 null,一旦调用 arr.length 或 arr[0] 就直接抛 NullPointerException。
- 推荐:
int[] scores = new int[5];或int[] scores = {85, 92, 78}; - 若确需延迟创建(如依赖注入、条件分支),务必在首次访问前完成初始化,避免裸声明长期悬空
相关文章
- Debian挂载ext4文件系统操作教程 07-06
- gimp在ubuntu下如何使用快捷键 07-06
- 在ubuntu中gimp如何应用滤镜 07-06
- gimp在ubuntu上怎么旋转图片 07-06
- gimp在ubuntu中怎样调整大小 07-06
- gimp在ubuntu中怎样卸载 07-06