Java中数组的索引可以为负数吗?

无名小*_*名小路 5 java arrays

public static void main(String[] args) {
    int[] a = new int[10];
    a[1] =2;
    a[-1] = -2;
    a[0] = 0;
    System.out.println(a[-1]);

}
Run Code Online (Sandbox Code Playgroud)

我在上面编写代码,编辑器没有判断它非法,但是当我运行它时,它给我“线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:-1”

那么java中的负数索引一直都是非法的吗?或者有什么特殊情况可以让数组的索引为负数?

Dar*_*hta 5

我们来看看Oracle的文档。它是这么说的:

数组对象包含许多变量。变量的数量可能为零,在这种情况下,数组被称为空数组。数组中包含的变量没有名称;相反,它们由使用非负整数索引值的数组访问表达式引用。这些变量称为数组的组成部分。如果一个数组有n个分量,我们说n是数组的长度;使用从 0 到 n - 1(含)的整数索引来引用数组的组件。

还,

所有数组访问都会在运行时检查;尝试使用小于零或大于或等于数组长度的索引会导致抛出 ArrayIndexOutOfBoundsException。

要回答这个问题,不,索引不能为负数。


Diy*_*iya 4

java 不支持负索引。最后一个元素可以使用以下方式访问

array[array.length-1] = lastElement;
Run Code Online (Sandbox Code Playgroud)