在数组中重新赋值的简单方法

时间:2013-08-17 12:35:30

标签: java arrays

我在重新分配数组中的值时遇到了麻烦。

    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};

    }

为什么我无法以我尝试的方式重新分配价值?如果我不能这样做,为什么我不能这样做?

3 个答案:

答案 0 :(得分:5)

  

为什么我无法以我尝试的方式重新分配价值?如果我不能这样做,为什么我不能这样做?

因为Java没有像其他语言一样解构赋值

您的选择是:

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

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

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

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

答案 1 :(得分:4)

您需要提供数组类型。使用此:

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

来自JLS Section 10.6

  

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

如果您尝试在某个范围内重新分配数组元素,则无法通过直接分配来执行此操作。您需要单独为索引分配值,或者使用@TJCrowder在答案中给出的方式。

答案 2 :(得分:3)

正确的语法是:

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