Java中的数组下标从哪里开始_数组访问规则解析

Java数组下标从0开始,合法范围是0到length-1;访问越界会抛出ArrayIndexOutOfBoundsException;循环遍历推荐for(int i=0; i

Java中的数组下标从0开始,这是Java语言的硬性规定,所有数组(无论是一维、二维还是多维)的第一个元素都通过索引 0 访问。

为什么下标从0开始

这并非Java独有,而是源于底层内存寻址逻辑:数组在内存中是连续存储的,首元素地址即为数组基地址,第n个元素的地址 = 基地址 + n × 元素大小。因此用0作为起始偏移量最自然、高效。

Java沿用了这一通用设计,保持与C/C++等语言的一致性,也便于开发者迁移和理解。

合法下标范围是 0 到 length-1

每个数组都有一个 length 属性(注意不是方法),表示元素总个数。访问时若下标超出该范围,运行时会抛出 ArrayIndexOutOfBoundsException

  • 对于长度为5的数组 int[] arr = new int[5];,合法下标是 0、1、2、3、4
  • arr[5]arr[-1] 都会触发异常
  • 循环遍历时推荐写法:for (int i = 0; i

多维数组也是从0开始逐层索引

二维数组本质上是一维数组的数组,每一维都独立遵循

“从0开始”的规则。

  • int[][] matrix = new int[3][4]; 表示3行4列,行下标0~2,列下标0~3
  • matrix[0][0] 是第一行第一列;matrix[2][3] 是最后一行最后一列
  • 获取行数用 matrix.length,获取某一行的列数用 matrix[i].length

字符串和集合类不适用数组下标规则

需注意区分:String虽可用 charAt(i) 按位置取字符,其索引也从0开始,但这属于方法调用,不是数组下标访问;ArrayList等集合使用 get(i),同样要求 i ∈ [0, size()),逻辑类似但底层实现不同。

它们遵循相同的“零起点”习惯,但语法和机制与原生数组有本质区别。