回答
O
是一個空數組,所以你不能複製任何東西。
O
是空數組並Ox
具有3000的長度,複製Ox
到O
你必須使用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;
}
Array
是immutable
,所以你不能分配給3000 size array
size 0 array
,在實施copyOf()
方法的Java創造了新的陣列char[] copy
和使用original
陣列的native
方法將內容複製到copy
陣列。
所以,在你的代碼,你不能直接Ox
數組內容複製到O
數組,你必須創建一個大小爲3000的數組或使用copyOf()
API的Java。
在Java數組中不可變,因此您不能更改數組的大小。因爲你隱式地聲明瞭O的大小爲0({}表示它是空的),所以它不能被填充。
您需要聲明尺寸3000(新的String [3000])的一個新的數組,然後使用該
用下面的語句聲明表但願是空的(大小= 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);
有一對夫婦的差異在這裏:
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,因此任何嘗試從該數組複製或從該數組複製都將導致異常。
感謝所有 - 帶來了一些新的信息,我 - 但
O = Arrays.copyOf(Ox, Ox.length);
從atish shimpi
有助於解決這個問題:))
- 1. 爲什麼這兩個命令之間有區別
- 2. PHP數組中的這兩個字符串有什麼區別?
- 3. 是什麼這兩個ASP.NET MVC IgnoreRoute指令之間的區別?
- 4. 這兩個命令有什麼區別?
- 5. 這兩個....之間有什麼區別?
- 6. 什麼是找到兩個字符串數組之間的PostgreSQL
- 7. 這兩個命令之間的區別(w&w/out「」)以及爲什麼?
- 8. 這兩行之間有什麼區別?
- 9. 兩個字符串有什麼區別?
- 10. 這兩個數組有什麼區別?
- 11. Angular Js:這兩個角度js之間的區別是什麼?
- 12. SQL Server中這兩個索引之間的區別是什麼?
- 13. 這兩個之間的區別是什麼(Haskell)
- 14. 這兩個for循環之間的區別是什麼?
- 15. 是什麼這兩個之間的區別查詢
- 16. 這兩個ID之間的主要區別是什麼?
- 17. 這兩個命令行執行.jar之間的區別?
- 18. 這兩個函數之間的區別
- 19. 對象和字符串對象之間的區別是什麼
- 20. 是什麼就是什麼這兩個之間的區別,除了與除BaseException
- 21. 這兩個張量之間有什麼區別,爲什麼?
- 22. 什麼是以下兩種數組之間的主要區別?
- 23. 這兩種初始化方式之間有什麼區別字符串
- 24. 是什麼就是什麼這兩者之間的區別兩種功能
- 25. 這兩個字符串有什麼區別?
- 26. keytool命令的導入和-importcert之間的區別是什麼
- 27. perf命令和perfmon2或libpfm4之間的區別是什麼
- 28. 這兩個可變參數函數之間的本質區別是什麼?
- 29. Perl 5中的字符串和數字之間的區別是什麼時候?
- 30. DOMContentLoaded vs window.onload。這兩者之間的真正區別是什麼?