Java后缀增量运算符(i++)是否创建新对象 我正在阅读C++ 101规则指南和最佳实践,在第28条中,他们声明如果我们不需要变量的旧值,则避免后增量运算符,因为这个操作符创建了一个副本,因此性能损失很小。
我想知道Java是否以同样的方式执行此操作,在这种情况下,for循环语句也应该优先使用前缀运算符,这些语句可能不适合for-each或lambda-forEach语句 Java规范说明§15.14.2: 后缀增量表达式的值是变量的值 之前 将存储新值Java后缀增量运算符(i++)是否创建新对象 我正在阅读C++ 101规则指南和最佳实践,在第28条中,他们声明如果我们不需要变量的旧值,则避免后增量运算符,因为这个操作符创建了一个副本,因此性能损失很小。,java,Java,我想知道Java是否以同样的方式执行此操作,在这种情况下,for循环语句也应该优先使用前缀运算符,这些语句可能不适合for-each或lambda-forEach语句 Java规范说明§15.14.2: 后缀增量表达式的值是变量的值 之前 将存储新值 那么,在操作过程中是否有任何时候创建的新对象?因为我们返回的内容与递增的变量不同。是的,有。这个方法可以解释: int iplusplus(int i){ //this is just an example. in real java, this
那么,在操作过程中是否有任何时候创建的新对象?因为我们返回的内容与递增的变量不同。是的,有。这个方法可以解释:
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将是一个副本,并且您不会更改调用代码中变量的值。您是在基本值上使用运算符还是在数字引用类型值上使用运算符?是的,在后缀增量之后,内存中有两个对象-新值和旧值。旧值是表达式的结果。一般来说,这些微优化问题在Java中是没有意义的,因为JVM中有运行时优化。是的,在搜索时没有看到这个问题,如果已经问过