Java数组应声明为int[] arr而非int arr[],优先使用{ }静态初始化或new动态初始化,避免悬空声明导致NullPointerException。
Java数组看似简单,但声明和初始化稍有不慎,就容易引发NullPointerException、越界异常或语义混淆。关键不是“能跑通就行”,而是选对写法,让代码一眼可读、不易出错、便于维护。
这是最基础也最容易被忽视的一点。推荐写法是 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免费学习笔记(深入)”;
适用于缓冲区、待计算结果、外部数据加载前的占位结构:
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};