在C/ c++中
int arr[10] = {0};
...将所有数组元素初始化为0。
Java中有类似的快捷方式吗?
我想避免使用循环,可以吗?
int arr[] = new int[10];
for(int i = 0; i < arr.length; i++) {
arr[i] = 0;
}
在C/ c++中
int arr[10] = {0};
...将所有数组元素初始化为0。
Java中有类似的快捷方式吗?
我想避免使用循环,可以吗?
int arr[] = new int[10];
for(int i = 0; i < arr.length; i++) {
arr[i] = 0;
}
当前回答
另一种方法是在java 8之上使用lambda
Arrays.stream(new Integer[nodelist.size()]).map(e ->
Integer.MAX_VALUE).toArray(Integer[]::new);
其他回答
int a=7, b=7 ,c=0,d=0;
int dizi[][]=new int[a][b];
for(int i=0;i<a;i++){
for(int q=d;q<b;q++){
dizi[i][q]=c;
System.out.print(dizi[i][q]);
c++;
}
c-=b+1;
System.out.println();
}
结果 0123456 -1012345 2 - 101234 3-2-10123 4-3-2-1012 5-4-3-2-101 6-5-4-3-2-10
将数组声明为类中的实例变量,即在每个方法之外,JVM将给它0作为默认值。你不必再担心了
虽然其他答案是正确的(int数组值默认初始化为0),如果你想显式地这样做(例如,如果你想用值42填充数组),你可以使用Arrays类的fill()方法:
int [] myarray = new int[num_elts];
Arrays.fill(myarray, 42);
或者如果你喜欢使用1-行程序,你可以使用Collections.nCopies()例程:
Integer[] arr = Collections.nCopies(3, 42).toArray(new Integer[0]);
将为arr赋值:
[42, 42, 42]
(虽然它是Integer,而不是int,如果你需要原始类型,你可以遵循Apache Commons ArrayUtils.toPrimitive()例程:
int [] primarr = ArrayUtils.toPrimitive(arr);
是的,数组中的int值初始化为0。但你不能保证这一点。Oracle文档指出这是一种糟糕的编码实践。
您可以使用现有的数组大小创建一个新的空数组,并将它们赋给您的数组。这可能比其他方法更快。 Snipet:
package com.array.zero;
public class ArrayZero {
public static void main(String[] args) {
// Your array with data
int[] yourArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//Creating same sized array with 0
int[] tempArray = new int[yourArray.length];
Assigning temp array to replace values by zero [0]
yourArray = tempArray;
//testing the array size and value to be zero
for (int item : yourArray) {
System.out.println(item);
}
}
}
结果:
0
0
0
0
0
0
0
0
0