首页 > 代码库 > java 中的 i++ 和 ++i
java 中的 i++ 和 ++i
熟悉c/c++中的i++和++i,那么你知道下面的java代码效果是什么吗?
一 、 代码示例
/** * * @author elelule * */public class TestPlusPlusOperator { public void test1() { int i = 0; i = i++; System.out.println(i); } public void test2() { int i = 0; i = ++i; System.out.println(i); }}
二、 输出结果
01
三、 字节码
public void test1(); Code: 0: iconst_0 1: istore_1 2: iload_1 //将存储栈帧中1号单元的 i load 到操作数栈帧上 3: iinc 1, 1 //将存储栈帧中的1号单元中的数据加 1 6: istore_1 //将操作栈帧上的数据存保存到存储栈帧的1号单元中 7: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 10: iload_1 11: invokevirtual #3 // Method java/io/PrintStream.println:(I)V 14: return public void test2(); Code: 0: iconst_0 1: istore_1 2: iinc 1, 1 // 将存储栈帧中的1号单元中的数据加 1 5: iload_1 // 将存储栈帧中的1号单元中的数据load 到操作数栈帧上 6: istore_1 // 将操作栈帧中的数据保存到存储栈帧中的 1 号单元中 7: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 10: iload_1 11: invokevirtual #3 // Method java/io/PrintStream.println:(I)V 14: return
四 、 总结
从上面的字节码可以看到,i=i++; 这条语句被字节码翻译成 “先挪走,然后对存储单元中的数据加1,最后把原来的数据再挪回来”,而 i=++i;这条语句被翻译成 “先对存储单元中的数据加1,然后挪走,最后再挪回来”。是不是c/c++中的不一样呢?当然!你可以试试这两个语句在c语言中输出的结果,还是相当然?
java 中的 i++ 和 ++i
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。