[Java] i++与++i的区别(后缀++与前缀++)

后缀++ (Postfix Increment)

根据Oracle官方给出的文档Postfix Increment Operator ++,假如i=10, 那么i++的行为是:

  1. 先将1与变量的值相加,将新值(11)存回变量
  2. 表达式返回旧值(10).

下述程序表达了这一过程:

int i = 10;
System.out.println(i ++); // 输出10

前缀++ (Prefix Increment)

根据文档Prefix Increment Operator ++, 假如i=10, 那么++i的行为是:

  1. 先将1与变量的值相加,将新值(11)存回变量
  2. 表达式返回新值(11).

下述程序表达了这一过程:

int i = 10;
System.out.println(++ i);

编程时选用哪种++?

答案很简单:

  1. 看你期待表达式的返回值是新值还是旧值;
  2. 不关心(don't care)表达式的返回值时,优先选用前缀++(返回新值).

第一点很容易理解。

第二点的原因则在于:如果选用后缀++, 那么表达式将返回变量的旧值,那么这一瞬间,内存将同时记录(保存)旧值和新值两个变量,其中旧值是返回后就不被使用的临时变量。但这个临时变量是不必要的,亦即“拷贝旧值的动作”以及“占用的内存”都是不必要的。

所以我说,在不关心表达式的返回值时,优先用前缀++, 以避免不必要的拷贝和内存浪费。(在我问过的人里,只有一个本科室友能回答出这个区别我会乱说?)

for (int i = 1; i <= 10; ++ i) {
    // 所以我的for循环习惯用++ i, 而不是i ++, 因为我们在第三个子句,进行i的自增操作时,并不关心这个自增表达式的返回值
}


++的应用举例

可以参考[Java] 作业1(基本程序设计)答疑中的"Q27“, 这题考察了++的用法。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值