2015-02-10 40 views

回答

1

O是一個空數組,所以你不能複製任何東西。

4

O是空數組並Ox具有3000的長度,複製OxO你必須使用copyOf() API Arrays類的。

O = Arrays.copyOf(Ox, Ox.length); 

Arrays.copyOf()創建O陣列長度改變爲3000和複製所有內容。

public static void main(String[] args) { 
     String [] O = {}; 
     String[] Ox = new String[3000]; 

     O = Arrays.copyOf(Ox, Ox.length); 
     System.out.println("O array length : "+O.length); // I am just printing length 
    } 

輸出:

O array length : 3000 

內部執行copyOf的()Arrays類的API。

public static char[] copyOf(char[] original, int newLength) { 
    char[] copy = new char[newLength]; 
    System.arraycopy(original, 0, copy, 0, 
      Math.min(original.length, newLength)); 
    return copy; 
} 

Arrayimmutable,所以你不能分配給3000 size arraysize 0 array,在實施copyOf()方法的Java創造了新的陣列char[] copy和使用original陣列的native方法將內容複製到copy陣列。

所以,在你的代碼,你不能直接Ox數組內容複製到O數組,你必須創建一個大小爲3000的數組或使用copyOf() API的Java。

3

在Java數組中不可變,因此您不能更改數組的大小。因爲你隱式地聲明瞭O的大小爲0({}表示它是空的),所以它不能被填充。

您需要聲明尺寸3000(新的String [3000])的一個新的數組,然後使用該

0

用下面的語句聲明表但願是空的(大小= 0,沒有元素)。

String[] o = {}; 

相反,如果你寫:

String[] o = {"this", "is", "a", "test"}; 

你已經初始化表o擁有大小= 4,包含四個字符串元素「本」,「是」,「a」和「考」 。

最後,如果您通過以下方式初始化表:

String[] o = new String[4]; 

您已聲明,您的數組的大小= 4,但所有四個要素爲空。當然,您以後可以更改陣列的值(例如,o[3] = "test")。現在

,如果你想一個數組中的元素複製到其他可以使用Arrays.copyOf(o, o.length);的方法,但通過以下方式:

String[] o = {"this", "is", "a", "test"}; 
String[] copy; // you don't have to (and shouldn't) initialize this variable to {} 
copy = Arrays.copyOf(o, o.length); 
0

有一對夫婦的差異在這裏:

1)String [] O = {};

這種手段來創建一個新的String[]稱爲O與包含在{}數據集初始化。由於沒有數據,所以O是「」空「。

這意味着O.length = 0,或者換句話說,此存儲陣列沒有與存儲相關聯的內存用於存儲目的。

由於數組在Java中是不可變的,因此您無法對此數組作進一步處理。

你可以這樣做:

String[] O = {"bob","Cat","ralph"} 

O.length // == 3 
O[0] // bob 
O[1] // Cat 
O[2] // ralph 

O[1] = "Sting" 
O[1] // now set to Sting 

O[4] = "Cause an Exception" // causes an index out of bounds exception 

2)String[] O = new String[3000];

在這種情況下,你已經創建了一個新的String[] 3000 「空格」 或 「指數」 可用。這意味着你可以在這個數組中保持對3000個String對象的引用。

所以:

O.length; //3000 because that is the length of this array 
    O[0] // will return null since we have not stored anything here 
    O[0] = "My String" 
    O[0] // now equals "My String" 
    O[3001] // throws an index out of bounds exception 

3)你怎麼能在它們之間複製:

總之你不能在這種情況下。由於數組1(String[] O = {})爲空且長度爲0,因此任何嘗試從該數組複製或從該數組複製都將導致異常。

0

感謝所有 - 帶來了一些新的信息,我 - 但

O = Arrays.copyOf(Ox, Ox.length); 

從atish shimpi

有助於解決這個問題:))

相關問題