2015-01-06 62 views
2

例如,可以說我創建了一個單維數組,並將數組初始化爲100.如果我希望能夠像使用for循環一樣使用數組的所有值,那我該怎麼做呢?我在下面找到了兩種方法,但我不確定哪種方法是推薦的。還有什麼區別嗎?哪個是在for循環中表示整個數組的正確方法?

int[] list = new int[100]; 
for (int i = 0; i < list.length; i++) 

for (int i = 0; i < 100; i++) 

這兩個語法是比較常用的?

+0

第一個比較好。注意你應該定義並使用一個帶有信息名稱的常量,而不是聲明一個具有*神奇數字的新數組*,即:'final int LIST_SIZE = 100;'然後是'int [] list = new int [LIST_SIZE ];'。 –

回答

10

這是好多了:

for (int i = 0; i < list.length; i++) 

如果您改變了主意,並決定該列表必須是長度150的代替,那麼你的代碼的其餘部分仍然有效。

另一種選擇,需要你,如果你改變數組的長度在所有更改所有的for循環。

實際上沒有其他區別。

編輯:作爲his answer提到Manoj Sharma,有一件事可以做:

for (int myInt : list) 

這將做迭代你,但你不能在循環中的索引。

我提到這個的完整性,但如果你發現這是很有幫助,給予好評他的答案!

+3

數組的list.length,'.size()'是'List'對象的屬性。見http://stackoverflow.com/questions/9297899/arrays-length-property –

+0

哎呦我的壞! upvoted – holtc

+0

只是讀取列表而沒有看到它實際上是一個數組。傻我:) – holtc

0

最好是陣列的長度存儲在變量中,然後使用它。而不是在循環中對其進行硬編碼,或者每次循環運行時找到它。

var arraySize = yourArray.length; 

for(i;i<arraySize; i++){ 
//your code here. 
} 
+0

爲什麼它更好?從我嘗試基準測試的經驗來看,它幾乎沒有更快。僅有1%的平均值。但我沒有做太多。 –

1

for (int i = 0; i < list.length; i++)它是動態的條件處理,這將根據自己的陣列長度變化。

for (int i = 0; i < 100; i++)它是靜態條件處理,如果你有成千上萬的for循環,你需要改變每個循環條件。

埃維時間確保您避免在應用程序中硬編碼。

0

在Java 8你好得多學習使用流。它們更直觀,不需要擔心尺寸等問題。

例如:

int list[] = {4, 7, 3, 9, 11}; 
Arrays.stream(list)... 

在這種情況下Arrays.stream知道你已經創建了一個IntStream讓你獲得最大值,最小值,排序,總和等

您需要的for循環更頻繁現在。

1

遠高於@Anubian菜鳥給出的回答是不錯的。但java5以後的java提供了增強的每個循環,這比其他更好。這種方法甚至沒有錯誤的機會。下面看:

for(int i: list){ 
System.out.println(i); 
} 

這將循環通過整個陣列和陣列中的顯示所有的元件存儲。您也可以將此方法用於多維數組。

+1

但缺點是你無法獲得循環中的索引,如果你需要它可能會很煩人。儘管如此,有用。 –

+0

它取決於條件,我們有while while循環也做。在某些情況下,while循環更好,然後循環。如果你不想要索引號相同,如果你只想要最快和最有效的沒有錯誤證明結構然後去增強for循環而不是簡單的循環。 –

+0

是的,這取決於你的應用程序。這是更清潔和更容易使用,但有一些權衡。 –

相關問題