锁定老帖子 主题:JAVA基本数据类型运算的内存详解
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-15
schweigen 写道 自己javap 一下去看字节码,引用mathfox 的内容:
mathfox 写道 7: iload_1 8: iinc 1, 1 11: istore_1 上面三个操作就是j = j++; 这个语句的字节码。 1、将j 这个变量的值压入栈中 2、将j 自增1 3、将栈中的值返回给j 到底内存地址变了没有,自己观察。 如果是这样..那不是违背了, j=j++.是先赋值再进++的规则.而是先++再赋值? 难道先赋值再进++的规则,只是一个经验总结???照理说.你的分析是对的.毕竟是字节码. |
|
返回顶楼 | |
发表时间:2010-04-15
amoszhou 写道 2022228 写道 关键是这步操作 j++,jvm的内部处理究竟是什么样子的。可以另开帖请大牛解答。
这贴被投了18个隐藏贴,不知道je上的高人是不是传说中的多。 我觉得很奇怪...难道JE上的大牛真如传说中这么多? 投隐藏贴的人都已经很清楚了??? 那为什么不出帮我解答一下?? 投隐藏贴已经是JE上那些NB的人的习惯了, 他们现在的感觉是, 每天不投个十个二十个隐藏贴批判一下别人就显示不出来自己的NB, 实际上只不过是自我感觉良好罢了, LZ不必理会他们 amoszhou 写道 如果是这样..那不是违背了, j=j++.是先赋值再进++的规则.而是先++再赋值? 难道先赋值再进++的规则,只是一个经验总结???照理说.你的分析是对的.毕竟是字节码. 我上个回复已经说了, ++发生的时间是在当前表达式计算完成之后紧接着进行, j = j++中 右侧是一个独立的表达式, j++的操作在右侧计算完成后发生, 而整个语句是个赋值语句, 当右侧的表达式计算完成后, 才会进行赋值操作. |
|
返回顶楼 | |
发表时间:2010-04-15
这什么例子啊,就是i++和++i的区别,怎么弄到内存上去了。误导观众。
换个例子吧,都没看你要说啥。 |
|
返回顶楼 | |
发表时间:2010-04-15
简单问题复杂化,这个例子别扯上内存。
没有循环还不是一样?故意复杂化了。 |
|
返回顶楼 | |