仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1613|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:int i=0;i=i++;i=?//复杂成绩面前的不简...

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:48:46 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
主要缺点就是:速度比较慢,没有C和C++快成绩人人能够在不运转的情形下得出这个成绩的谜底吗?大概你会不加思考地说谜底是1,现在我也是这么以为的,但是运转的了局让我很受惊,0!为何会如许呢?上面我们对照两段程序和它们的汇编代码(javap-cxxx失掉):inti=0;i=i++;inti=0;i=++i;------------------------------------------------------------------------------------0:iconst_00:iconst_01:istore_21:istore_22:iload_22:iinc2,13:iinc2,13:iload_24:istore_24:istore_25:return5:return它们区分在于2,3两句。从优先级来看"前++">"=">"后++",以是汇编代码分明地显现了代码实行地历程。第二段代码地了局是1,没有成绩。从汇编代码来看,=赋值地历程是先使用一时变量盘算=右侧地值,然后在赋给右边地变量。如许,我们就很简单注释第一段代码地运转了局了:一时变量先失掉i本来地值是0(汇编代码1),这时候候思索优先级,=年夜于后++,以是一时变量就实行赋值操纵,以后一时变量先读出i地值(汇编代码2),再举行++操纵(汇编代码3),可是++操纵只是在一时变量本人身上加一,不会影响本来地i值。依照下面地思绪再剖析第二段代码,也就水到渠成了:)总结:java中的=操纵由一时变量盘算了局,然后再赋回原变量,因为优先级成绩就会呈现意想不到的了局,细心剖析流程就可以得出了局。论坛原贴:http://community.csdn.net/Expert/TopicView3.asp?id=3885309感激:blackhost(剑心),kingfish(八百里秦川@龙城异客)
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-18 11:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表