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