在C/C++我以前做
int arr[10] = {0};
Run Code Online (Sandbox Code Playgroud)
将我的所有数组元素初始化为0.
Java中是否有类似的快捷方式?
我想避免使用循环,是否可能?
int arr[] = new int[10];
for(int i=0;i<arr.length;i++)
arr[i] = 0;
Run Code Online (Sandbox Code Playgroud)
Mic*_*rdt 540
语言规范保证了整数类型数组的默认值0 :
每个类变量,实例变量或数组组件在创建时都使用默认值进行初始化(§15.9,§15.10)[...]对于类型
int,默认值为零,即0.
如果要将数组初始化为不同的值,可以使用java.util.Arrays.fill()(当然在内部使用循环).
Ada*_*kin 95
虽然其他答案是正确的(int数组值默认初始化为0),如果你想明确地这样做(例如,如果你想要一个填充值42的数组),你可以使用fill()方法该数组类:
int [] myarray = new int[num_elts];
Arrays.fill(myarray, 42);
Run Code Online (Sandbox Code Playgroud)
或者,如果你是1-liners的粉丝,你可以使用Collections.nCopies()例程:
Integer[] arr = Collections.nCopies(3, 42).toArray(new Integer[0]);
Run Code Online (Sandbox Code Playgroud)
会给arr的价值:
[42, 42, 42]
Run Code Online (Sandbox Code Playgroud)
(虽然它是Integer,但不是int,如果你需要原始类型,你可以遵循Apache CommonsArrayUtils.toPrimitive()例程:
int [] primarr = ArrayUtils.toPrimitive(arr);
Run Code Online (Sandbox Code Playgroud)
Arn*_*sch 35
在java中,默认情况下所有元素都初始化为0.你可以保存循环.
小智 21
它如何降低应用程序的性能......?阅读以下内容
在Java语言规范中,任何对象的默认/初始值可以如下给出.
对于类型字节,所述默认值是零,即,(字节)的值是0.
对于类型短,所述默认值是零,即,的值(短)是0.
对于类型INT,所述默认值是零,即,0.
对于类型长时,默认值是零,也就是0L.
对于类型浮子,该默认值是正零,即,0.0F.
对于类型双,则默认值是正零,也就是0.0D.
对于类型字符,则默认值是空字符,也就是" \ u0000的 ".
对于类型布尔型,则默认值是假的.
对于所有引用类型的默认值是零.
通过考虑所有这些,您不需要使用数组元素的零值进行初始化,因为默认情况下,对于int数组,所有数组元素都为0.
因为数组是一个容器对象,它包含固定数量的单个类型的值.现在你的数组类型是int,所以考虑所有数组元素的默认值将自动为0因为它保持int类型.
现在考虑String类型的数组,以便所有数组元素的默认值都为null.
为什么不这样做......?
您可以按照问题中的建议使用循环来指定空值.
int arr[] = new int[10];
for(int i=0;i<arr.length;i++)
arr[i] = 0;
Run Code Online (Sandbox Code Playgroud)
但是,如果你这样做,那将是一个无用的机器周期损失.如果你在你的应用程序中使用多个阵列并且你为每个阵列执行此操作,那么它将影响应用程序性能达到相当高的水平.
更多使用机器周期==>更多时间处理数据==>输出时间将显着增加.这样您的应用程序数据处理可以被视为低级别(慢到某个级别).
KLE*_*KLE 16
你可以保存循环,初始化已经为0.即使是局部变量.
但为了便于阅读(请认可的最佳做法),请更正您放置括号的位置:
int[] arr = new int[10];
Run Code Online (Sandbox Code Playgroud)
Pan*_*yal 14
如果您使用Float或Integer,那么您可以像这样分配默认值...
Integer[] data = new Integer[20];
Arrays.fill(data,new Integer(0));
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用现有的数组大小创建一个新的空数组,并可以将它们分配回您的数组.这可能比其他更快.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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
0
0
0
0
0
0
0
0
0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
441559 次 |
| 最近记录: |