Java数组下标必须为0到length-1的非负整数,越界抛ArrayIndexOutOfBoundsException;长度用arr.length而非arr.length();多维数组按层级索引;越界仅运行时检查,需手动校验。

Java中通过下标(即索引)访问数组,必须使用 非负整数,且范围严格限定在 0 到 数组长度 - 1 之间。越界会直接抛出 ArrayIndexOutOfBoundsException。
下标从0开始是硬性规则
Java沿用C语言传统,数组第一个元素的下标固定为 0,最后一个为 length - 1。不存在“第1个元素下标是1”的情况。
-
int[] arr = {10, 20, 30};→arr[0]是10,arr[2]是30 -
arr[-1]或arr[3]都会立即报错
获取数组长度用 .length,不是 .length()
数组是对象但不是集合类,没有 length() 方法;它的长度是 public final 成员变量,名为 length,不带括号。
- ✅ 正确:
int len = arr.length; - ❌ 错误:
arr.length();(编译不通过) - ⚠️ 注意:
String类才有length()方法,别和数组混淆
多维数组按层级用多个下标
二维及以上数组本质是“数组的数组”,每个维度单独用一对方括号,顺序对应维度层级。
立即学习“Java免费学习笔记(深入)”;
int[][] matrix = {{1,2}, {3,4}};-
matrix[0][1]表示第0行、第1列 → 值为2 -
matrix[1][0]是3;matrix[2][0]越界报错
运行时检查无法绕过,需主动防御
Java不在编译期检查下标是否越界,所有越界问题只在运行时暴露。因此涉及用户输入、循环变量或计算索引时,务必手动校验。
- 循环推荐写法:
for (int i = 0; i - 接收外部索引时先判断:
if (index >= 0 && index - 避免依赖“不会越界”的假设,尤其是处理字符串
charAt()或substring()时逻辑类似
不复杂但容易忽略——下标合法性完全靠程序员自己把关,JVM只负责在出错时精准报错。










