在 java 中初始化数组的一部分

Initialize part of an array in java

我正在学习 java,我在文档中没有看到任何关于此的信息。是否可以仅初始化数组的一部分,在一行中使用一堆不同的字符串:

String[] anArray = new String[20] {"water", "shovel", "berries", "stick", "stone", "seed", "axe"};

数组中只填充了7个space,剩下的可以稍后再初始化?这可能吗?我发现手动填充每个 space anArray[i] 很麻烦。由于我代码中其他地方的原因,我也不想使用 ArrayList。

感谢帮助!

您可以这样做,它会根据提供的内容创建具有新大小的数组。

    String[] temp = new String[] {"water", "shovel", "berries", "stick", "stone", "seed", "axe"};
    String[] val = Arrays.copyOf(temp, 20);

    System.out.println(val.length);
    System.out.println(Arrays.toString(val));

输出将是:

20
[water, shovel, berries, stick, stone, seed, axe, null, null, null, null, null, null, null, null, null, null, null, null, null]

是的,这是可能的,但差别很小。

String anArray = new String[] {"water", "shovel", "berries", "stick", "stone", "seed", "axe"};

创建大小为 7 的数组

String anArray = new String[20];

创建大小为 20 的数组然后初始化它

anArray[0] = "water";
anArray[1] = "shovel";
...

不,你不能按照你尝试的方式来做。这是因为(根据 docs 教程) 这种声明数组的方式:

String[] array = {"Apple", "Orange"};

是一个捷径:

String[] array = new String[2];
array[0] = "Apple";
array[1] = "Orange";

在教程中提到了第一种方式:

Here the length of the array is determined by the number of values provided between braces and separated by commas.

声明大小然后尝试执行声明 array 的快捷语法是无效的。 (实际给出的警告是:Cannot define dimension expressions when an array initializer is provided

这样是不可能的,但可以输入 null 并稍后分配。

String[] arr = new String[] {"water", "shovel", "berries", "stick", null, null};