今天寫代碼時發現了如下問題:
public class Test { public static void main(String[] args) { int[] arr= new int[5]; for (int a : arr) { a=1; } System.out.println(Arrays.toString(arr)); } }
[0, 0, 0, 0, 0]
可以看出,使用foreach方法沒辦法給數組賦值。
實際上,foreach語句
for (int a : arr) { a=1; }
相當於:
for(int i=0;i<arr.length;i++) { int a=arr[i]; a=1; }
使用foreach時,是賦值給了一個臨時變量,采用值傳遞,臨時變量的改變並不會改變arr[i]本身,與如下代碼的原理相同:
int a = 1; int b = a; b = 2; System.out.println(a); //a不會隨着b改變
因此,以后在使用foreach時要注意:foreach僅可用於遍歷輸出數組,但不能用於修改數組。