2010-09-23 52 views
3

這只是一個簡單的問題,我無法在文檔中找到答案!Java數組創建

String args[] = new String[0]; 
args[0] = "test"; 

這是正確的嗎?這是否創建一個具有1個元素或0個元素的數組?

謝謝,我知道,愚蠢的問題,但我無法在Java文檔中找到答案。

+3

您正在查找的文檔可能是[this](http://download.oracle。com/javase/tutorial/java/nutsandbolts/arrays.html) – 2010-09-23 14:22:42

+0

是的!當我看着 – 2010-09-23 14:27:54

+1

當你嘗試它時發生了什麼? – 2010-10-07 08:21:45

回答

7

這將創建一個長度爲0的數組。第二行將給出ArrayIndexOutOfBoundsExpection

3

您的代碼是錯誤的。第一個數字規定的陣列的長度,所以它應該是1

String args[] = new String[1]; 

在陣列中的第一個元素被標記爲myArray的[0]

8

String[] arr = new String[]{"test"}

1

是的它似乎有點奇怪 - 當你創建數組時,你聲明瞭數組有多少個元素,所以0表示沒有元素。然而,當你遍歷一個數組時,第一個元素是第0個元素而不是第1個元素......請記住,大小/長度與索引不同。

0

長度5的陣列與創建的:

String myArray[] = new String[5]; 

此數組中的項都使用索引0,1,2,3,4 - 注意,它們開始在索引0處,而不是索引1,等等(數組長度 - 1)。

所以

new String[0] 

創建長度爲0到分配索引0會導致錯誤的陣列 - 有數組中沒有位置分配給。

​​3210

將產生長度爲1的陣列,其中在索引0處的單一位置,這樣,那麼您可以合法做:

myArray[0] = "happy days"; 
+0

語言具有從零開始的數組索引是有技術意義的。但是,這導致了不計其數的錯誤。 – 2010-09-23 23:48:23

0
String args[] = new String[0]; 

這產生沒有元素的陣列。訪問任何元素,即使是args[0],都會導致ArrayIndexOutOfBoundsException。陣列的組件數量可在args.length中找到。

String args[] = new String[1]; 

這將創建一個包含1個元素的數組。元素訪問爲args[0]。第一個元素總是在索引0處。訪問任何其他元素將導致ArrayIndexOutOfBoundsException

String args[] = new String[10]; 

這創建了一個包含10個元素的數組。第一個元素是args[0],最後一個元素是args[9]。最後一個位置總是小於數組的大小。

參考文獻:

0

new String[x]將創建字符串與大小x空數組。 當x = 0時,你的Array將有沒有條目,所以任何試圖訪問它的元素都會導致異常。 如果你想要它有一個元素,你應該指定你想要的一個元素:new String[1]會創建一個帶有1個條目的字符串數組。

雖然上述參數指定尺寸數組的,以後使用一個是索引。 在許多語言中,[]用於索引(常規使用)和大小(創建數組時),這可能會造成混淆。

簡單的規則:一個有效的索引將永遠是> = 0和<大小的數組。

0 <= index < size

的指數,也稱爲偏移,是你去從一開始就多遠 - 許多元素融入你一步數組如何。

2

如果你正在試圖做的PHP類相當於ARGS [] =「新條目」的再看一看

List<String> args = new ArrayList<String>(); 
args.add("test"); 
args.add("and some more"); 
args.add("and even more"); 

這工作得很好,並會自動擴展您的列表。當你需要將其轉換爲一個數組,你可以使用:

String[] argArray = args.toArray(new String[args.size()]); 
0

String args[] = new String[0];

創建大小0也被稱爲一個數組的數組。由於該數組不包含任何元素,因此不能使用索引,包括0。使用的任何索引就會導致java.lang.ArrayIndexOutOfBoundsException

-1

這裏是一個簡單的&官方example

+0

1)避免僅鏈接答案。如果鏈接失效,答案是毫無價值的。 2)這個問題已經回答了(並且已經有很多答案) – 2013-03-21 09:02:53

+0

好的。我還在學習。 – easoncxz 2013-03-21 09:24:29

+0

Downvoting是stackoverflow如何工作的一部分,您必須接受,如果downvote帶有解釋。把我的問題作爲復仇來回報並不是很有成效。 – 2013-03-21 15:41:06