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

有没有办法同时做以下事情?

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; 

这可能吗?

谢谢。

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

这是一个链接 。 不过,那里也有一些垃圾; 我只是直接发布了当前来源的副本而没有清理它。

 Arrays.fill(arr, UN); 

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

只是

 int[] array = new int[size]; 

足够。 它为您提供给定长度的零数组。 如果它是一个Integer[] ,它将是一个null数组。

好吧,对于对象(或具有自动装箱的基元),您可以执行以下操作:

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

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

没有。

下一个问题?

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

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

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

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

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