【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仅可用于遍历输出数组,但不能用于修改数组。

  

扫描二维码关注公众号,回复: 4053528 查看本文章

猜你喜欢

转载自www.cnblogs.com/yongh/p/9951332.html