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

      

  • 相关阅读:
    2.4学习
    2.3学习
    2.2学习
    2.1学习
    公文流转系统 模拟
    《GCC编译器的使用以及静态库和动态库的制作与使用》
    《驱动调试
    《海思3521D
    《驱动调试
    《驱动调试
  • 原文地址:https://www.cnblogs.com/yongh/p/9951332.html
Copyright © 2020-2023  润新知