Java Iterable.forEach(消费者)
我试图理解为什么下面的代码片段不能按预期工作。我怀疑这是因为Integer类的不变性,但现在还不清楚。你能给我解释一下吗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是一个局部变量,当使
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;