我可以使用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循环。 第二种技术是不可能的。