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

3

我正在学习java,但是在文档中没有看到相关内容。请问是否可以在一行中用多个字符串初始化数组的部分元素:

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

数组中只填充了7个空间,其余的可以稍后初始化吗?这种情况是否可能?我发现手动填写每个空间anArray[i]很麻烦。另外,由于代码的其他原因,我也不想使用ArrayList。

感谢您的帮助!

4个回答

3
不,你不能按照你的尝试方式这样做。原因是(根据文档),声明数组的方式如下:
String[] array = {"Apple", "Orange"};

"

"是一个简便的写法,用于表示:

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

在教程中,第一种方法是这样说的:

在这里,数组的长度由大括号中提供的值的数量和逗号分隔来确定。

声明大小并尝试使用声明数组的快捷语法是无效的。(实际给出的警告是:当提供数组初始化程序时不能定义维度表达式

2
你可以像这样做,它会创建一个基于所提供大小的新数组。
    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]

谢谢!虽然不是最理想的,但它跟我原本想做的最接近。 - Rohan
@Rohan 太好了!是啊... Java 有一些限制((( 你可以尝试 Kotlin,它也可以在 JVM 上运行,并且可用于 Android 开发。它非常棒;) - Serge Breusov

1

这样做是不可能的,但可以使用null进行占位,并在后面进行赋值。

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

1
这似乎是对OP想要做的事情和初始化数组限制的一个很好的妥协。 (只是警告一下,您展示的那行代码无法编译。) - GBlodgett

-2

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

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

创建大小为7的数组。
String anArray = new String[20];

创建大小为20的数组,然后您可以对其进行初始化。
anArray[0] = "water";
anArray[1] = "shovel";
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接