java一维数组的核心是固定长度、同类型、下标从0开始;声明推荐用“数据类型[] 名称”,初始化分动态、静态和标准静态三种,需避免未初始化访问和下标越界。

Java一维数组是编程入门的基石,核心不在语法多复杂,而在理解“固定长度、同类型、下标从0开始”这三个刚性约束。掌握它,才能自然过渡到ArrayList、Stream甚至算法题。
一维数组怎么声明和初始化才不踩坑
声明和初始化有三种主流写法,推荐统一用「数据类型[] 名称」格式,清晰表达“这是一个数组类型”:
- 动态初始化(先分配空间):int[] scores = new int[5]; → 创建5个int格子,每个默认值为0
- 静态初始化(一步赋值):int[] scores = {85, 92, 78, 96, 88}; → 长度自动推断为5,不能后续再改长度
- 标准静态初始化(显式new):int[] scores = new int[]{85, 92, 78}; → 少用,但某些场景(如方法传参)必须
注意:int scores[] 是兼容C的写法,可读性差,不建议新项目使用;声明后未初始化就直接访问(如int[] a; System.out.println(a[0])),会报NullPointerException。
访问与遍历:下标越界是新手最高频异常
数组元素通过数组名[索引]访问,索引范围严格为 0 到 length - 1。超出即抛 ArrayIndexOutOfBoundsException。
- 传统for循环:适合需要下标参与逻辑的场景(比如找最大值位置、交换元素)
for (int i = 0; i - 增强for循环(for-each):简洁安全,只取值不关心下标
for (int num : arr) { System.out.println(num); } —— 但无法修改原数组元素(本质是副本)
length是数组的唯一长度属性,不是方法,不带括号;String有length(),数组是length,别混淆。
常用操作:求和、最值、反转,代码要简洁可复用
这些操作看似简单,但写出健壮、边界安全的代码才是重点:
- 求和与平均值:先判空(arr == null || arr.length == 0),再累加,平均值记得用double避免整除截断
- 找最大/最小值:不能假设数组非空,初始值建议用arr[0],再从i=1开始遍历比较
- 数组反转:用双指针,头尾互换,交换次数为 length / 2;注意别用额外数组,原地操作更高效
例如反转逻辑:
for (int i = 0, j = arr.length - 1; i
进阶要点:内存、默认值与Arrays工具类
数组是引用类型,变量存的是堆中地址。理解这点,才能明白为什么传数组进方法能被修改。
- 默认值规则:int→0,double→0.0,boolean→false,char→'\u0000',引用类型→null
- Arrays类是实用助手:Arrays.toString(arr) 打印内容,Arrays.sort(arr) 快速排序(仅限基本类型或实现Comparable的类型),Arrays.copyOf(arr, newLen) 实现扩容语义
- 二维数组本质是一维数组的数组:int[][] matrix = new int[3][4]; → 先创建含3个元素的一维数组,每个元素又指向一个长度为4的int数组
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











