[英]Variable-sized Array Initialization in Java
我在Java中有一個整數數組,初始化如下:
public int MyNumbers[] = {0,0,0,0};
但是,我想將數組初始化為可變長度的零。
private int number_of_elements = 4;
public int MyNumbers[] = {0} * number_of_elements; // ????
我不知道怎么做這個來自C的Java新手。有什么建議嗎?
編輯
我知道我可以使用for
循環,但我希望有一個簡單的方法來做到這一點。
int[] myNumbers = new int[size];
Arrays.fill(myNumbers, 0);
見http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html
int[] MyNumbers = new int[number_of_elements];
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);
如果您正在尋找與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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.