java中++i和i++是否一样
来源:互联网 发布:易赛软件 编辑:程序博客网 时间:2024/05/21 17:12
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">今天同事之间在讨论String字符串拼接的效率问题,使用javap查看字节码,突然想看看++i和i++在字节码上的区别.</span>
代码:
int j = 0;
j++;
使用javap查看编译之后的字节码
0: iconst_01: istore_12: iinc 1, 15: return
代码:
int j = 0;++j;
使用Javap查看编译之后的字节码
0: iconst_01: istore_12: iinc 1, 15: return通过上面的字节码我们看到,如果在一个语句中单独使用前自增和后自增是一样的,也就是这两个语句不会有任何的效率差异,
但是如果我们将这个表达式放入某个大的表达式中,我们再看看!
代码:
int j = 0;j = ++j;通过javap查看编译之后的字节码
0: iconst_0 1: istore_1 2: iinc 1, 1 5: iload_1 6: istore_1 7: return代码:
int j = 0;j = j ++;
使用javap查看编译之后的字节码
0: iconst_01: istore_12: iload_13: iinc 1, 16: istore_17: return通过上面的字节码我们可以看到++j是先增加,在将这个值load出来,在将这个值存储到内存中
,而后自增是先将这个值load出来在增加,最后将增加后的值存储到内存中
如果我们通过控制台打印出来,第一个结果是1,而第二个结果是0
最后将比较完整的代码贴上来:
如果我们通过控制台打印出来,第一个结果是1,而第二个结果是0
最后将比较完整的代码贴上来:
import java.util.Random;public class Test {public static void main(String[] args) {int j = 0;j = j++;System.out.println("后自增:"+j);int i = 0;i = ++i;System.out.println("前自增:"+i);}}结果是:
后自增:0
前自增:1
前自增:1
0 0
- java中++i和i++是否一样
- java中i++和++i
- java中i++和++i
- java中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的区别
- Java i++和i--
- java ++i 和 i++
- java ++i 和 i++
- 二维数组中a+i和*(a+i)一样含义解析
- i++和++i的区别以及在for循环中效果一样解惑
- Java中i++,++i 和i= i+ 1的区别
- Activity类的创建
- 程序设计原则(整理)
- 通过vmstat的简单分析数据库操作
- 作为码农,我们为什么要写作
- hashcode()的作用
- java中++i和i++是否一样
- Java中的类加载
- 启动hadoop时报错,nodemanager running as process 6410. Stop it first.解决方法
- C++集合操作之集合交集:std::set_intersection
- 建筑建模学习笔记3——Vray渲染及PS修图
- C++实现CVPR2010 LLC(局部约束线性编码)
- NYOJ 814 又见拦截导弹
- LeetCode 24 Swap Nodes in Pair
- Openstack部署工具总结