4

我在重新分配数组中的值时遇到问题。

    public static void main(String[] {

            int[] arrayOfIntegers = new int[4];
            arrayOfIntegers[0] = 11;
            arrayOfIntegers[1] = 12;
            arrayOfIntegers[2] = 13;
            arrayOfIntegers[3] = 14;

            arrayOfIntegers = {11,12,15,17};

    }

为什么我无法以我尝试过的方式重新分配值?如果我做不到,为什么我做不到?

4

3 回答 3

5

为什么我无法以我尝试过的方式重新分配值?如果我做不到,为什么我做不到?

因为 Java 不像其他一些语言那样具有解构赋值

您的选择是:

  1. 如 Rohit 和 Kayaman 所示,为数组变量分配一个数组,但这不是您所要求的。你说你想分配给元素。如果将新数组分配给ArrayOfIntegers,则在不同变量或成员中引用旧数组的任何其他内容仍将引用旧数组。

  2. 使用System.arraycopy,但它涉及创建一个临时数组:

     System.arraycopy(new int[]{11,12,15,17},
                      0,
                      ArrayOfIntegers,
                      0,
                      ArrayOfIntegers.length);
    

System.arraycopy将元素复制到现有数组中。

于 2013-08-17T12:37:56.210 回答
4

您需要提供数组的类型。用这个:

arrayOfIntegers = new int[] {11,12,15,17};

JLS 第 10.6 节

数组初始值设定项可以在声明中指定(第 8.3 节、第 9.3 节、第 14.4 节),或作为数组创建表达式的一部分(第 15.10 节)来创建数组并提供一些初始值。

如果您尝试重新分配某个范围内的数组元素,则无法通过直接分配来做到这一点。您需要单独在索引处分配值,或者使用@TJCrowder 在他的回答中给出的方式。

于 2013-08-17T12:36:04.743 回答
3

正确的语法是:

arrayOfIntegers = new int[]{11,12,15,17};
于 2013-08-17T12:36:14.267 回答