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。
立即学习“Java免费学习笔记(深入)”;
- 对于长度为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()),逻辑类似但底层实现不同。
它们遵循相同的“零起点”习惯,但语法和机制与原生数组有本质区别。










