行业普遍采用 type[] name 形式声明数组,严格区分声明、实例化、初始化三阶段;声明必须为 int[] numbers 而非 int numbers[],静态初始化仅限声明时使用,动态初始化须用 new,未实例化访问会触发 nullpointerexception。

行业普遍采用 type[] name 形式声明数组,且严格区分声明、实例化、初始化三个阶段。这不是语法强制,而是经过长期工程实践沉淀出的可读性、安全性与协作一致性的最优解。
声明必须用 type[] name 格式
写成 int[] numbers 而非 int numbers[]。前者明确表达“numbers 是一个整型数组类型”,语义集中;后者易引发歧义——比如 int a[], b; 中只有 a 是数组,b 是普通 int,这种 C 风格写法在团队协作和 Code Review 中已被主流项目(如 Spring、Apache Commons)弃用。
初始化分静态与动态,不可混用或跳步
静态初始化仅允许出现在声明语句中:String[] tags = {"java", "array", "init"};。若先声明再赋值:String[] tags; tags = {"java", "array"}; 会编译失败。动态初始化必须显式使用 new:double[] values = new double[10];,此时元素自动设为默认值(0.0),后续需单独赋值。
禁止未实例化就访问
int[] arr; 之后直接调用 arr.length 或 arr[0] 会触发 NullPointerException。所有数组变量在声明后都为 null,必须完成实例化(new)才拥有内存和 length 属性。CI 流程中常通过 SonarQube 检测此类空引用风险。
多维数组与匿名数组按场景规范使用
二维数组推荐逐层初始化:int[][] grid = new int[3][4];,避免不规则形状带来的维护成本。匿名数组(如 Arrays.asList(new String[]{"a", "b"}))仅用于一次性传参,不赋值给命名变量,也不重复使用——它没有生命周期管理负担,但也不支持后续修改。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











