我正在阅读C ++ 101规则指南和最佳实践,在第28项中,他们声明如果我们不需要变量的旧值,则应避免使用后增量运算符,因为此运算符会创建它的副本因此,性能损失很小。
我想知道Java是否以相同的方式执行此操作,在这种情况下,前缀运算符也应该优先用于for循环语句(可能不适合for-each或lambda forEach()语句)
Java规范告诉(§15.14.2):
后缀增量表达式的值是变量的值 之前 存储新值
那么,在操作过程中的任何时候都会创建一些新对象吗?因为我们正在返回与已增加的变量不同的东西。
答案 0 :(得分:0)
是的,有。这种方法可以解释一下:
int iplusplus(int i){ //this is just an example. in real java, this would be a copy of i
int old = i; //this is the copy that might be unneeded
i = i+1; //this is the actual increment
return old;
}
old
是复制的值。如果您只想增加i
,则++i
更短:
int plusplusi(int i){
return i+1;
}
如前所述,这个方法不一样,因为参数i是副本,你不会在调用代码中改变变量的值。