java一维数组是固定长度、同类型、连续内存块的容器,声明—创建—赋值三步需清晰,索引从0开始,最大合法下标为length-1,元素类型统一且不可变长,数组本身为引用类型。

Java一维数组并不难,但初学者常卡在“声明—创建—赋值”三步逻辑不清、索引越界反复出错、以及默认值理解偏差这几个点上。掌握它关键不是背语法,而是建立对内存连续性、索引边界和类型约束的直觉。
一维数组到底是什么
它本质是一个固定长度、同类型、连续内存块的容器。比如声明 int[] scores = new int[5];,JVM就在堆里划出5个挨着的int格子(每个4字节),栈中只存这个数组的地址。它不是魔法,就是一块整齐排列的“小格子”,靠下标0、1、2……来编号取用。
- 所有元素必须是同一类型(不能 int 和 String 混装)
- 长度一旦确定就不能扩容或缩容(想改大小就得新建数组+复制)
- 下标从0开始,最大合法下标永远是
数组名.length - 1 - 数组本身是引用类型,哪怕元素是int这样的基本类型
三种初始化方式别混淆
写法不同,语义清晰才不容易翻车:
-
动态初始化:先画格子再填数
int[] arr = new int[3];→ 格子建好,内容默认为0;后续可逐个赋值:arr[0] = 10; -
静态初始化(带new):边建格子边填数
String[] names = new String[]{"Alice", "Bob"};→ 长度自动为2,不能写成new String[2]{...} -
简化静态初始化:最常用,仅限声明时用
double[] prices = {19.9, 29.9, 39.9};→ 等价于上面,但不能拆成两行写
访问与遍历的常见坑
越界和空指针是新手两大报错来源,根源往往就差一个判断:
- 读写前检查下标:
if (i >= 0 && i ,尤其在循环外手动访问时 - 声明后没
new就直接用 → 报NullPointerException,例如int[] data; data[0] = 1;必崩 - 遍历推荐两种写法:
• 普通for:适合需要下标的操作(如找最大值位置)
• 增强for(foreach):只读元素、代码简洁,但拿不到下标
默认值规则要记牢
数组创建后未显式赋值,JVM会按类型自动填默认值——这不是“随机值”,而是明确约定:
- 数值类型(byte/short/int/long/float/double)→ 0 或 0.0
- boolean → false
- char → '\u0000'(空字符,不是空格)
- 引用类型(String、自定义类等)→ null
所以 String[] words = new String[3]; 创建后,words[0] 是 null,不是空字符串,调用 words[0].length() 会空指针。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











