Java-forEach增强for循环是值传递规则详解

本文详细解析了Java中增强for循环(foreach)的值传递规则,通过数组和ArrayList的例子说明在增强for循环中仅进行值传递,而非引用传递。解释了尝试在循环中修改原数据结构无效的原因,并提供了正确修改原数据结构的方法。同时,展示了Java集合的forEach方法默认实现,强调在需要修改原数据结构时应使用传统for循环。
摘要由CSDN通过智能技术生成

1. 引入

 正如Java语法意义,变量的传递只有值传递,虽然变量分为引用变量和基本类型变量,前者更像C中的地址概念。
在学习Lambda表达式的时候,遇到了试图在增强for循环中对原链表元素重新赋值失败的问题,网络上也没有针对此的其他博文,故开此文。

2. 数组的增强for循环

public class Test1{
   

    public static void main(String[] args) {
   
    
        int[] arr = new int[10];

        for (int temp :arr){
   
            temp++;
        }

        for (int temp :arr){
   
            System.out.println(temp);
        }


    }
}

 控制台会打出10个0,而不是1,这表明在forEach语句中temp++操作对arr数组本身没有任何影响,所以间接证明了,增强for循环中只是值传递。这也可以从原理层面解释:增强for循环作为一个语法糖,其执行顺序是:对数组第一个元素复制给临时变量temp,然后让temp

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值