我可以使用Java中的相同指令声明和初始化数组吗?

时间:2010-08-06 18:33:16

标签: java arrays initialization declaration

有没有办法同时执行以下操作?

static final int UN = 0; // uninitialized nodes
int[] arr;

// ... code ...

arr = new int[size];
for (int i = 0; i < 5; i++) {
    arr[i] = UN;
}

基本上,一旦我知道它的大小,我想声明arr并将其初始化为UN而不必循环。所以像这样:

int[] arr = new int[size] = UN;

这可能吗?

感谢。

7 个答案:

答案 0 :(得分:4)

Arrays.fill(arr, UN);

答案 1 :(得分:1)

您无需使用0初始化它们。 int默认为0

只是

int[] array = new int[size];

就够了。它为您提供给定长度的零数组。如果它是Integer[],则它将是null s。

的数组

答案 2 :(得分:1)

嗯,对于对象(或带有自动装箱的图元),您可以执行以下操作:

int count = 20;
final int UN = 0;
Integer[] values = Collections.nCopies(count, UN).toArray(new Integer[count]);

缺点是你必须使用基元的对象形式(因为集合必须是对象),并且将构造一个单独的List然后扔掉。这将允许您将数组创建为一个语句。

答案 3 :(得分:0)

不,不是标准库。但是,如果您编写自己的函数,则可以在单个语句中轻松完成(不是指令;它们是不同的)。我看起来像String[][] strings = Arrayu.fill(new String[x][y], "");

这是一个link。但是那里也有一些垃圾;我刚刚发布了一份当前来源的副本而没有清理它。

答案 4 :(得分:-1)

哎呀,更好地阅读你的问题:

你可以像这样初始化一个数组

int[] arr = new int[] {UN, UN, UN, UN, UN};

但是当然,如​​果你不知道编译时的大小,那么你必须进行for循环。第二种技术是不可能的。

答案 5 :(得分:-1)

没有

下一个问题?

答案 6 :(得分:-1)

int arr[] = { 0, 0, 0, 0, 0 };