在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中的int默认值为零。 对于非0的值,java.util.Arrays提供了许多选项,最简单的一个是fill方法。
int[] arr = new int[5];
Arrays.fill(arr, -1);
System.out.println(Arrays.toString(arr)); //[-1, -1, -1, -1, -1 ]
int [] arr = new int[5];
// fill value 1 from index 0, inclusive, to index 3, exclusive
Arrays.fill(arr, 0, 3, -1 )
System.out.println(Arrays.toString(arr)); // [-1, -1, -1, 0, 0]
我们也可以使用Arrays.setAll()如果我们想在条件的基础上填充值:
int[] array = new int[20];
Arrays.setAll(array, p -> p > 10 ? -1 : p);
int[] arr = new int[5];
Arrays.setAll(arr, i -> i);
System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4]
其他回答
将数组声明为类中的实例变量,即在每个方法之外,JVM将给它0作为默认值。你不必再担心了
在java中,所有元素(原始整数类型字节短,整型,长)默认初始化为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);
你可以保存循环,初始化已经被设为0。即使是局部变量。
但是为了可读性(公认的最佳实践),请更正您放置括号的位置:
int[] arr = new int[10];
是的,数组中的int值初始化为0。但你不能保证这一点。Oracle文档指出这是一种糟糕的编码实践。