我在Java中有一个整数数组,初始化如下:
public int MyNumbers[] = {0,0,0,0};
但是,我想将数组初始化为可变长度的零。
private int number_of_elements = 4;
public int MyNumbers[] = {0} * number_of_elements; // ????
我不知道如何做这个来自C的Java新手。有什么建议吗?
修改
我知道我可以使用for
循环,但我希望有一种简单的方法可以做到。
答案 0 :(得分:32)
int[] myNumbers = new int[size];
Arrays.fill(myNumbers, 0);
请参阅http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html
答案 1 :(得分:6)
int[] MyNumbers = new int[number_of_elements];
答案 2 :(得分:5)
或者您可以使用ArrayList
,这样您就不必事先担心尺寸。它会在需要时动态扩展内部数组。
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(0);
numbers.add(2);
// ...
Here's a tutorial了解有关ArrayList
所属的Collections API的更多信息。
答案 3 :(得分:2)
int[] MyNumbers = new int[number_of_elements];
由于这是int
数组,因此数组元素将自动获取Java 0
中int的默认值。
如果这是一个Integer
个对象的数组,那么在创建它之后你必须填充数组,因为对象引用的默认值是null
。要在Object
数组中设置默认值,您可以执行以下操作:
Integer[] MyNumbers = new Integer[number_of_elements];
java.util.Arrays.fill(MyNumbers, new Integer(0));
当然可以使用相同的技术将int
数组初始化为零以外的值,如下所示:
int[] MyNumbers = new int[number_of_elements];
java.util.Arrays.fill(MyNumbers, 1);
答案 4 :(得分:0)
如果您正在寻找与C中的Memset类似的东西,我认为没有。如果你看看Javadoc,Arrays.fill实现似乎与for循环相同。
但是,我遇到了这篇讨论相同问题的文章 http://www.searchenginecaffe.com/2007/03/how-to-quickly-reset-value-of-java.html 似乎使用system.arraycopy是更好的解决方案,这是您可以使用的功能(从链接复制)
public static void bytefill(byte[] array, byte value) {
int len = array.length;
if (len > 0)
array[0] = value;
for (int i = 1; i < len; i += i) {
System.arraycopy( array, 0, array, i, ((len - i) < i) ? (len - i) : i);
}
}