例如,可以說我創建了一個單維數組,並將數組初始化爲100.如果我希望能夠像使用for循環一樣使用數組的所有值,那我該怎麼做呢?我在下面找到了兩種方法,但我不確定哪種方法是推薦的。還有什麼區別嗎?哪個是在for循環中表示整個數組的正確方法?
int[] list = new int[100];
for (int i = 0; i < list.length; i++)
或
for (int i = 0; i < 100; i++)
這兩個語法是比較常用的?
例如,可以說我創建了一個單維數組,並將數組初始化爲100.如果我希望能夠像使用for循環一樣使用數組的所有值,那我該怎麼做呢?我在下面找到了兩種方法,但我不確定哪種方法是推薦的。還有什麼區別嗎?哪個是在for循環中表示整個數組的正確方法?
int[] list = new int[100];
for (int i = 0; i < list.length; i++)
或
for (int i = 0; i < 100; i++)
這兩個語法是比較常用的?
這是好多了:
for (int i = 0; i < list.length; i++)
如果您改變了主意,並決定該列表必須是長度150的代替,那麼你的代碼的其餘部分仍然有效。
另一種選擇,需要你,如果你改變數組的長度在所有更改所有的for循環。
實際上沒有其他區別。
編輯:作爲his answer提到Manoj Sharma,有一件事可以做:
for (int myInt : list)
這將做迭代你,但你不能在循環中的索引。
我提到這個的完整性,但如果你發現這是很有幫助,給予好評他的答案!
最好是陣列的長度存儲在變量中,然後使用它。而不是在循環中對其進行硬編碼,或者每次循環運行時找到它。
var arraySize = yourArray.length;
for(i;i<arraySize; i++){
//your code here.
}
爲什麼它更好?從我嘗試基準測試的經驗來看,它幾乎沒有更快。僅有1%的平均值。但我沒有做太多。 –
for (int i = 0; i < list.length; i++)
它是動態的條件處理,這將根據自己的陣列長度變化。
for (int i = 0; i < 100; i++)
它是靜態條件處理,如果你有成千上萬的for
循環,你需要改變每個循環條件。
埃維時間確保您避免在應用程序中硬編碼。
在Java 8你好得多學習使用流。它們更直觀,不需要擔心尺寸等問題。
例如:
int list[] = {4, 7, 3, 9, 11};
Arrays.stream(list)...
在這種情況下Arrays.stream知道你已經創建了一個IntStream讓你獲得最大值,最小值,排序,總和等
您需要的for循環更頻繁現在。
遠高於@Anubian菜鳥給出的回答是不錯的。但java5以後的java提供了增強的每個循環,這比其他更好。這種方法甚至沒有錯誤的機會。下面看:
for(int i: list){
System.out.println(i);
}
這將循環通過整個陣列和陣列中的顯示所有的元件存儲。您也可以將此方法用於多維數組。
但缺點是你無法獲得循環中的索引,如果你需要它可能會很煩人。儘管如此,有用。 –
它取決於條件,我們有while while循環也做。在某些情況下,while循環更好,然後循環。如果你不想要索引號相同,如果你只想要最快和最有效的沒有錯誤證明結構然後去增強for循環而不是簡單的循環。 –
是的,這取決於你的應用程序。這是更清潔和更容易使用,但有一些權衡。 –
第一個比較好。注意你應該定義並使用一個帶有信息名稱的常量,而不是聲明一個具有*神奇數字的新數組*,即:'final int LIST_SIZE = 100;'然後是'int [] list = new int [LIST_SIZE ];'。 –