在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;
}
当前回答
如果你正在使用浮点或整数,那么你可以像这样分配默认值…
Integer[] data = new Integer[20];
Arrays.fill(data,new Integer(0));
其他回答
如果你正在使用浮点或整数,那么你可以像这样分配默认值…
Integer[] data = new Integer[20];
Arrays.fill(data,new Integer(0));
它如何降低应用程序的性能....?阅读以下。
在Java语言规范中,任何对象的默认/初始值可以如下所示。
对于byte类型,默认值为0,即(byte)的值为0。
对于short类型,缺省值为0,即(short)的值为0。
对于int类型,默认值为0,即0。
对于long类型,缺省值为0,即0L。
对于float类型,默认值为正零,即0.0f。
对于double类型,默认值为正0,即0. d。
对于char类型,默认值是空字符,即'\u0000'。
对于boolean类型,默认值为false。
对于所有引用类型,默认值为null。
考虑到这些,你不需要为数组元素初始化0值,因为默认情况下,int array的所有数组元素都是0。
因为数组是一个容器对象,它拥有固定数量的单一类型的值。 现在数组的类型是int,所以考虑所有数组元素的默认值将自动为0,因为它持有int类型。
现在考虑String类型的数组,这样所有数组元素的默认值都是null。
为什么不这样做......?
你可以在你的问题中建议使用循环来分配空值。
int arr[] = new int[10];
for(int i=0;i<arr.length;i++)
arr[i] = 0;
但如果你这样做,那么它将是一个无用的机器周期损失。 如果你在你的应用程序中使用很多数组,并且你对每个数组都这样做,那么它将影响应用程序的性能到相当大的水平。
机器使用周期越长==>处理数据的时间越多==>输出时间将显著增加。这样你的应用程序数据处理可以被认为是低级别的(慢到某个级别)。
你在你的问题中正确地定义了它,它几乎与c++相同。对于基元数据类型,您需要做的就是初始化数组。默认值是int 0。
int[] intArray = new int[10];
另一种方法是在java 8之上使用lambda
Arrays.stream(new Integer[nodelist.size()]).map(e ->
Integer.MAX_VALUE).toArray(Integer[]::new);
正如每个人都提到的,初始化后int值已经为零。如果你确实需要将数组值设置为0并想要优化它,请使用System.arraycopy:
static private int[] zeros = new float[64];
...
int[] values = ...
if (zeros.length < values.length) zeros = new int[values.length];
System.arraycopy(zeros, 0, values, 0, values.length);
这在大多数或所有JRE实现中都在幕后使用memcpy。注意,即使是多线程,使用这样的静态也是安全的,因为最坏的情况是多个线程并发地重新分配零,这不会造成任何损害。
你也可以使用数组。填充就像其他人提到的那样。数组。fill可以在智能JVM中使用memcpy,但可能只是一个Java循环和随之而来的边界检查。
当然,要对优化进行基准测试。