一、foreach循環概述
Java語言中,foreach循環是一種簡化循環代碼書寫的語法。它自動遍曆數組或容器中的元素,無需顯式地去控制循環變數的變化。foreach循環的格式為:
for(元素類型 變數名 : 數組或容器名) { 循環體語句 }
其中,元素類型即數組或容器中元素的類型,變數名為循環的臨時變數,用於獲取數組或容器中的元素。例如:
int[] nums = {1, 2, 3, 4, 5}; for(int num : nums) { System.out.println(num); }
以上代碼將輸出數組nums中的所有元素。
二、foreach循環數組遍歷
使用foreach循環遍曆數組時,可以遍歷整個數組,也可以遍曆數組的部分元素。
1. 遍歷整個數組
遍歷整個數組時,只需在foreach語句中指定數組名即可:
String[] names = {"Alice", "Bob", "Cathy"}; for(String name : names) { System.out.println(name); }
以上代碼將輸出數組names中的所有元素。
2. 遍歷部分元素
遍歷部分元素時,需使用數組名和索引來限定遍歷的範圍。例如,以下代碼輸出數組nums中索引為1~3的元素:
int[] nums = {1, 2, 3, 4, 5}; for(int i=1; i<4; i++) { System.out.println(nums[i]); }
等價於使用foreach循環:
int[] nums = {1, 2, 3, 4, 5}; for(int num : Arrays.copyOfRange(nums, 1, 4)) { System.out.println(num); }
Arrays.copyOfRange()方法用於返回一個包含指定數組區間的新數組。在以上代碼中,Arrays.copyOfRange(nums, 1, 4)返回的新數組包含了nums數組中索引為1~3的元素。
三、foreach循環容器遍歷
除了數組,foreach循環還能夠遍歷Java中的容器類,例如List和Set。遍歷容器的過程與遍曆數組類似。
1. 遍歷List容器
List是Java中常用的容器類。遍歷List的方式為:
List list = new ArrayList(); list.add("Apple"); list.add("Banana"); list.add("Cat"); for(String item : list) { System.out.println(item); }
以上代碼將輸出List容器中的所有元素。
2. 遍歷Set容器
Set是Java中的另一種常用容器類,它不允許有重複元素。遍歷Set的方式為:
Set set = new HashSet(); set.add("Apple"); set.add("Banana"); set.add("Cat"); for(String item : set) { System.out.println(item); }
以上代碼將輸出Set容器中的所有元素。
四、foreach循環和傳統循環的比較
使用foreach循環遍曆數組或容器的代碼相較於傳統的for循環更加簡潔明了,避免了手動控制循環變數和循環邊界的繁瑣細節。但是,在某些情況下,foreach循環並不適合使用。例如,需要遍曆數組並對每個元素進行操作時,傳統的for循環更加靈活、好用。
1. 使用foreach循環修改數組元素的值
foreach循環一般用於遍曆數組或容器,不太適合進行修改操作。以下代碼在使用foreach循環修改數組nums中元素的值時會造成編譯錯誤:
int[] nums = {1, 2, 3, 4, 5}; for(int num : nums) { num *= 2; // 錯誤:num是一個循環變數,無法修改 System.out.println(num); }
可以使用傳統的for循環進行遍歷:
int[] nums = {1, 2, 3, 4, 5}; for(int i=0; i<nums.length; i++) { nums[i] *= 2; // 正確:使用數組索引遍歷並修改數組元素的值 System.out.println(nums[i]); }
2. 使用傳統循環遍歷不規則數組
不規則數組是指行、列不同的二維數組。對於不規則數組,由於每行元素個數不同,因此無法使用foreach循環進行遍歷。例如,以下代碼使用foreach循環遍歷二維數組時會造成編譯錯誤:
int[][] nums = {{1,2,3}, {4,5}, {6,7,8,9}}; for(int[] row : nums) { for(int num : row) { System.out.println(num); // 錯誤:nums是一個不規則數組 } }
可以使用傳統的for循環遍歷不規則數組:
int[][] nums = {{1,2,3}, {4,5}, {6,7,8,9}}; for(int i=0; i<nums.length; i++) { for(int j=0; j<nums[i].length; j++) { System.out.println(nums[i][j]); // 正確:使用兩個索引變數遍歷二維數組 } }
五、代碼示例
public class ForeachLoopDemo { public static void main(String[] args) { int[] nums = {1, 2, 3, 4, 5}; // 遍歷整個數組 for(int num : nums) { System.out.println(num); } // 遍歷部分元素 for(int num : Arrays.copyOfRange(nums, 1, 4)) { System.out.println(num); } String[] names = {"Alice", "Bob", "Cathy"}; // 遍曆數組 for(String name : names) { System.out.println(name); } List list = new ArrayList(); list.add("Apple"); list.add("Banana"); list.add("Cat"); // 遍歷List容器 for(String item : list) { System.out.println(item); } Set set = new HashSet(); set.add("Apple"); set.add("Banana"); set.add("Cat"); // 遍歷Set容器 for(String item : set) { System.out.println(item); } int[][] nums2D = {{1,2,3}, {4,5}, {6,7,8,9}}; // 遍歷二維數組 for(int i=0; i<nums2D.length; i++) { for(int j=0; j<nums2D[i].length; j++) { System.out.println(nums2D[i][j]); } } } }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236524.html