Java Iterable.forEach(消费者)

Java Iterable.forEach(消费者),java,foreach,Java,Foreach,我试图理解为什么下面的代码片段不能按预期工作。我怀疑这是因为Integer类的不变性,但现在还不清楚。你能给我解释一下吗 List<Integer> a1 = Arrays.asList(1, 2, 4); a1.forEach(integer -> integer += 10); 使用以下命令: a1.replaceAll(integer -> integer + 10); 整数对象是不可变的。整数+=10表示 由于integer是一个局部变量,当使

我试图理解为什么下面的代码片段不能按预期工作。我怀疑这是因为Integer类的不变性,但现在还不清楚。你能给我解释一下吗

    List<Integer> a1 = Arrays.asList(1, 2, 4);
    a1.forEach(integer -> integer += 10);
使用以下命令:

a1.replaceAll(integer -> integer + 10);
整数对象是不可变的。整数+=10表示


由于integer是一个局部变量,当使用者返回时,结果将被丢弃。

您的代码与此非常相似:

for (int i = 0; i<a1.size(); i++){
    int integer = a1.get(i);
    integer = integer + 10;
}
仅仅因为我们改变了b的值,并不意味着我们也改变了a的值


如果您正在寻找根据某个函数更新列表中所有值的方法,请使用添加为的replaceAll方法。

您能定义您期望的内容和得到的内容吗?这与forint值的情况相同:list{value=value+10;}。@Philibobby请参阅erickson的回答谢谢您的解释
for (int i = 0; i<a1.size(); i++){
    int integer = a1.get(i);
    integer = integer + 10;
}
int a = 10; 
int b = a;
b = 20;