zoukankan      html  css  js  c++  java
  • 【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仅可用于遍历输出数组,但不能用于修改数组。

      

  • 相关阅读:
    vijos 1426
    2455 繁忙的都市
    2104 删除物品
    3235 战争
    BZOJ 2962
    COGS 265 线段覆盖
    P2184 贪婪大陆
    0729模拟赛解题报告
    BZOJ 1012
    BZOJ 2763
  • 原文地址:https://www.cnblogs.com/yongh/p/9951332.html
Copyright © 2011-2022 走看看