Java中的可变大小数组初始化

时间:2010-01-07 20:36:25

标签: java arrays initialization

我在Java中有一个整数数组,初始化如下:

public int MyNumbers[] = {0,0,0,0};

但是,我想将数组初始化为可变长度的零。

private int number_of_elements = 4;
public int MyNumbers[] = {0} * number_of_elements; // ????

我不知道如何做这个来自C的Java新手。有什么建议吗?

修改

我知道我可以使用for循环,但我希望有一种简单的方法可以做到。

5 个答案:

答案 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);
 }
}