【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