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

在Java中数组的索引可以是负数吗?,java,arrays,Java,Arrays,我在上面写代码,编辑并没有判定它是非法的,但当我运行它时,它给了我 主线程java.lang.ArrayIndexOutOfBoundsException中出现异常:-1 那么,java中的负数索引一直都是非法的吗?或者有一些特殊情况可以让数组的索引为负数?java不支持负索引。 最后一个元素可以使用 public static void main(String[] args) { int[] a = new int[10]; a[1] =2; a[-1] = -2;

我在上面写代码,编辑并没有判定它是非法的,但当我运行它时,它给了我 主线程java.lang.ArrayIndexOutOfBoundsException中出现异常:-1


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

java不支持负索引。 最后一个元素可以使用

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]);

}

java中不支持负索引。 最后一个元素可以使用

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]);

}
那么,java中的负数索引一直都是非法的吗

或者有一些特殊情况可以让数组的索引为负数

您可以编写自己的类似数组的集合类型,其中负索引是有效的。它应该是一种特定于域的类型,因为我想不出任何通用的应用程序

一个简单的例子是

array[array.length-1] = lastElement;
这不是我建议你做的。这对于任何Java开发人员来说都是令人困惑和不寻常的

那么,java中的负数索引一直都是非法的吗

或者有一些特殊情况可以让数组的索引为负数

您可以编写自己的类似数组的集合类型,其中负索引是有效的。它应该是一种特定于域的类型,因为我想不出任何通用的应用程序

一个简单的例子是

array[array.length-1] = lastElement;
这不是我建议你做的。对于任何Java开发人员来说,这都是令人困惑和不寻常的

略短的回答:数组索引的范围从0到数组长度减1

例如:

// define an anonymous class that overrides ArrayList's get behaviour
List<String> list = new ArrayList<String>() {
    @Override
    public String get(int index) {
        return super.get(Math.abs(index));
    }
};

list.add("a");
list.add("b");

System.out.println(list.get(-1)); // b
System.out.println(list.get(1));  // b
简短回答:没有

略短的回答:数组索引的范围从0到数组长度减1

例如:

// define an anonymous class that overrides ArrayList's get behaviour
List<String> list = new ArrayList<String>() {
    @Override
    public String get(int index) {
        return super.get(Math.abs(index));
    }
};

list.add("a");
list.add("b");

System.out.println(list.get(-1)); // b
System.out.println(list.get(1));  // b

让我们看一下Oracle的文档。它是这样说的:

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

而且

在运行时检查所有阵列访问;尝试使用索引 小于零或大于或等于 数组导致抛出ArrayIndexOutOfBoundsException


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

让我们看看Oracle的文档。它是这样说的:

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

而且

在运行时检查所有阵列访问;尝试使用索引 小于零或大于或等于 数组导致抛出ArrayIndexOutOfBoundsException


回答这个问题,不,指数不能是负的。

简言之,不,指数不能是负的

例如,从使用get

ArrayIndexOutOfBoundsException-如果指定的索引参数为负数,或者大于或等于指定数组的长度


简言之,不,它们不可能是消极的

例如,从使用get

ArrayIndexOutOfBoundsException-如果指定的索引参数为负数,或者大于或等于指定数组的长度


在java中,不能使用负索引。它是基于0的正指数。如果使用负索引,java将抛出ArrayIndexOutOfBoundsException异常。

在java中,不能使用负索引。它是基于0的正指数。如果使用负索引,java将抛出ArrayIndexOutOfBoundsException异常。

java中的数组不能使用负数进行索引,问题是java中到目前为止还没有定义此类无符号整数,因此写入myArr[x]一旦x是一个有效的数字索引,就会编译。java中的数组不能使用负数进行索引,问题是到目前为止java中还没有定义这样的无符号整数,因此编写myArr[x]一旦x是有效的数字索引,就会编译。Java数组不能有负索引使用映射,那么编辑器只是一个助手,而不是判断者。编撰者是评判者:到目前为止,有八个答案说的是同样的话。有多少种方式可以说不?不,负指数不是po
但是如果你能说出你需要这个的确切原因,你的问题是可以解决的。Java数组不能有负索引使用映射,那么编辑器只是一个助手,而不是判断者。编撰者是评判者:到目前为止,有八个答案说的是同样的话。有多少种方法可以说不?不,负指数是不可能的,但如果你告诉确切的问题,为什么你需要这个,你的问题可以解决。