【Java】 foreach對數組賦值問題


  今天寫代碼時發現了如下問題:

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僅可用於遍歷輸出數組,但不能用於修改數組。

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM