[Java] i++与++i的区别(后缀++与前缀++)
来源:互联网 发布:ubuntu 修改apt源 编辑:程序博客网 时间:2024/05/22 20:53
后缀++ (Postfix Increment)
根据Oracle官方给出的文档Postfix Increment Operator ++,假如i=10, 那么i++的行为是:
- 先将1与变量的值相加,将新值(11)存回变量
- 表达式返回旧值(10).
下述程序表达了这一过程:
int i = 10;System.out.println(i ++); // 输出10
前缀++ (Prefix Increment)
根据文档Prefix Increment Operator ++, 假如i=10, 那么++i的行为是:
- 先将1与变量的值相加,将新值(11)存回变量
- 表达式返回新值(11).
下述程序表达了这一过程:
int i = 10;System.out.println(++ i);
编程时选用哪种++?
答案很简单:
- 看你期待表达式的返回值是新值还是旧值;
- 在不关心(don't care)表达式的返回值时,优先选用前缀++(返回新值).
第一点很容易理解。
第二点的原因则在于:如果选用后缀++, 那么表达式将返回变量的旧值,那么这一瞬间,内存将同时记录(保存)旧值和新值两个变量,其中旧值是返回后就不被使用的临时变量。但这个临时变量是不必要的,亦即“拷贝旧值的动作”以及“占用的内存”都是不必要的。
所以我说,在不关心表达式的返回值时,优先用前缀++, 以避免不必要的拷贝和内存浪费。(在我问过的人里,只有一个本科室友能回答出这个区别我会乱说?)
for (int i = 1; i <= 10; ++ i) { // 所以我的for循环习惯用++ i, 而不是i ++, 因为我们在第三个子句,进行i的自增操作时,并不关心这个自增表达式的返回值}
++的应用举例
可以参考[Java] 作业1(基本程序设计)答疑中的"Q27“, 这题考察了++的用法。
0 0
- [Java] i++与++i的区别(后缀++与前缀++)
- 后缀自增/自减运算符与前缀自增/自减运算符的使用区别(即i++与++i)
- JAVA i++ i-- 与 ++i --i的区别
- java中i++与++i的区别
- java中i++与++i的区别
- java中i++与++i的区别
- java中 i++ 与 ++i 的区别
- java 基础 i++与++i的区别
- Java中 i++与++i的区别
- java中i++ 与 i=i++的区别
- i++与++i的区别
- i++与++i的区别
- i++与++i的区别
- i++与++i的区别
- i++与++i的区别
- i++与++i的区别
- ++i;与i++的区别
- ++i与i++的区别
- selenium(1)
- CodeForces 86D Powerful array 莫队算法
- [Leetcode]303. Range Sum Query - Immutable
- 前m大的数
- C语言的那些秘密之---函数返回局部变量
- [Java] i++与++i的区别(后缀++与前缀++)
- java中的重写---在笔试中重新认识其特性
- C++第一次上机实验报告—02
- 简单的调用本地服务器播放网络视频
- lsb_release -a 查询系统版本
- mac下maven的安装和常用命令
- nGrinder源码分析:自动中断测试任务
- static作用
- 百度地图导航没有声音