在Java里如何通过下标访问数组_Java数组索引规则说明

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]10arr[2]30
  • arr[-1]arr[3] 都会立即报错

获取数组长度用 .length,不是 .length()

数组是对象但不是集合类,没有 length() 方法;它的长度是 public final 成员变量,名为 length,不带括号。

  • ✅ 正确:int len = arr.length;
  • ❌ 错误:arr.length();(编译不通过)
  • ⚠️ 注意:String 类才有 length() 方法,别和数组混淆

多维数组按层级用多个下标

二维及以上数组本质是“数组的数组”,每个维度单独用一对方括号,顺序对应维度层级。

  • int[][] matrix = {{1,2}, {3,4}};
  • matrix[0][1] 表示第0行、第1列 → 值为 2
  • matrix[1][0]3matrix[2][0] 越界报错

运行时检查无法绕过,需主动防御

Java不在编译期检查下标是否越界,所有越界问题只在运行时暴露。因此涉及用户输入、循环变量或计算索引时,务必手动校验。

  • 循环推荐写法:for (int i = 0; i
  • 接收外部索引时先判断:if (index >= 0 && index

  • 避免依赖“不会越界”的假设,尤其是处理字符串 charAt()substring() 时逻辑类似

不复杂但容易忽略——下标合法性完全靠程序员自己把关,JVM只负责在出错时精准报错。