我在重新分配数组中的值时遇到了麻烦。
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};
}
为什么我无法以我尝试的方式重新分配价值?如果我不能这样做,为什么我不能这样做?
答案 0 :(得分:5)
为什么我无法以我尝试的方式重新分配价值?如果我不能这样做,为什么我不能这样做?
因为Java没有像其他语言一样解构赋值。
您的选择是:
将一个 new 数组分配给数组变量,如Rohit和Kayaman所示,但这不是你提出的问题。你说你想分配给元素。如果将新数组分配给ArrayOfIntegers
,则在其他变量或成员中引用旧数组的任何其他内容仍将引用旧数组。
使用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};
可以在声明(第8.3节,第9.3节,第14.4节)中指定数组初始值设定项,或者作为数组创建表达式(第15.10节)的一部分,以创建数组并提供一些初始值。
如果您尝试在某个范围内重新分配数组元素,则无法通过直接分配来执行此操作。您需要单独为索引分配值,或者使用@TJCrowder在答案中给出的方式。
答案 2 :(得分:3)
正确的语法是:
arrayOfIntegers = new int[]{11,12,15,17};