Java postfix increment operator(i ++)是否创建了一个新对象

时间:2016-04-13 15:40:59

标签: java

我正在阅读C ++ 101规则指南和最佳实践,在第28项中,他们声明如果我们不需要变量的旧值,则应避免使用后增量运算符,因为此运算符会创建它的副本因此,性能损失很小。

我想知道Java是否以相同的方式执行此操作,在这种情况下,前缀运算符也应该优先用于for循环语句(可能不适合for-each或lambda forEach()语句)

Java规范告诉(§15.14.2):

  

后缀增量表达式的值是变量的值   之前    存储新值

那么,在操作过程中的任何时候都会创建一些新对象吗?因为我们正在返回与已增加的变量不同的东西。

1 个答案:

答案 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是副本,你不会在调用代码中改变变量的值。