java i++ 和 ++i 深度解析
2015-08-08 16:39
375 查看
i++ 和 ++i 都能实现+1, 顺序不同
[code]public class TestPlus { public static void main(String[] args) { int i = 0; System.out.println(i++); int j = 0; System.out.println(++j); System.out.println("i=" + i + " j=" + j); } }
输出结果为
[code]0 1 i=1 j=1
如上所示:
i++ 是执行完后面的语句, 才加1
++i 就先加1, 才执行后面的语句
i++利用了中间缓存变量
如果 i = i++ 会是什么结果呢[code]public class TestPlus { public static void main(String[] args) { int i = 0; i = i++; System.out.println(i); int j = 0; j = ++j; System.out.println(j); } }
输出为
[code]0 1
i++ 有中间缓存变量, i = i++ 等价于
[code]temp = i; i = i + 1; i = temp;
所以 i 不变, 依然是0
[code]//Warning: The assignment to variable j has no effect j = ++j;
[code]j = ++j 相当于 j = j = j + 1
所以编译器警告, 语句的赋值没有作用
总结
++i 没有中间缓存变量, 理论上比 i++ 更加高效相关文章推荐
- 学习笔记——ajax传值数组对象中遇到的问题
- 2014届华为校园招聘机试题(java实现)
- Java:谈谈protected访问权限
- 线程通信2
- java 排序
- 利用jaxb进行xml与javabean的数据绑定
- Java集合类中Sort排序的使用方法
- Exception in thread "main" java.lang.NoClassDefFoundError错误解决
- Java实现多线程经典问题:使用三个线程实现输出ABCABC循环
- springmvc的数据回显
- Xuggle使用教程
- Java实现排序算法之归并排序
- Java--equals 和 ==
- JAVA中三种URL连接方法
- Struts2 入门教程
- springmvc的数据校验
- java运行内存结构
- Java--引用与指针
- Calendar日历类,Date类
- java里的分支语句--程序运行流程的分类(顺序结构,分支结构,循环结构)