x=x+1、x+=1和x++的不同

原创 2007年09月27日 13:16:00
        之前一直习惯性的认为java语言中x=x+1、x+=1和x++仅仅是书写表示方法的不同,没想到细细研究,差别还是不小的。
从执行效率上讲,x=x+1<x+=1<x++
就拿x=x+1来说,分别要对左右两侧的x取址两次,编译器不会认为两侧的x的地址是同一个地址,所以效率最低。

也许在java上这样细抠效率有“掉书袋”之嫌,那不考虑效率问题,在某些场合,这三者甚至不是等价的。
譬如如下程序片段
……
byte x=1;
x=x+1;
……

结果编译的时候就会报错,因为x+1得到的是一个int型值,如果赋值给byte型的x,需要强制类型转换,如下所示:
……
byte x=1;
x=(byte)(x+1);
……


但如果你将x=x+1换成x++或x+=1,都能够顺利通过编译。

相关文章推荐

【Intel Code Challenge Elimination Round (Div1 + Div2, combined) D】【贪心 暴力 SET】Generating Sets n个不同的x变

D. Generating Sets time limit per test 2 seconds memory limit per test 256 megabytes ...

15_Struts1.x高级应用

15.1 Struts1.x标签库 分为html,bean,logic,nested和tiles标签 15.1.1 html标签库 tag.jsp JSP for Ta...
  • uikoo9
  • uikoo9
  • 2013年01月06日 16:34
  • 886

X264码率控制总结1——ABR,CQP,CRF

1.  X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF。这三种方式的优先级是ABR > CQP > CRF. [cpp] view plaincopyif ( b...

Struts2和Strtus1.x进行全面的比较

为了对Struts2和Strtus1.x进行全面的比较,让读者了解这两种框架各自的优缺点,以便于在自己的项目中,根据实际情况,选择合适的框架,对它们两者进行比较,总结了如下表分析比较。 ...

Struts1.x 实现文件上传

在Struts1中,提供了较好的文件上传方法。 下面我通过一个简单的例子实现一个简单的文件上传功能: A.通过MyEclipse新建一个java Web Project,命名为UpLoadWeb ...

Cocos2d-x 3.0 新特性体验(1)创建项目+运行sample+新特性内容

转自:http://www.2cto.com/kf/201401/273819.html 不得不说,cocos2d-x的版本更迭真是快,而最新的cocos2d-x v3.0 Beta版本中包含...

caffe中的卷积的计算细节和1x1卷积作用

在卷积神经网络中,卷积算是一个必不可少的操作, 下图是一个简单的各层的关系。 可以看出一个很好的扩展的关系,下面是整个卷积的大概的过程 图中上半部分是传统的卷积的...

(2)AngularJS 1.X 之和数据绑定相关的指令

引言 和数据绑定相关指令 1 代码实现 2 代码解释 双向绑定是如何实现的 1 双向绑定原理watch 队列 2 双向绑定原理digest循环 3 双向绑定原理apply方法 总结1.引言      ...

《Cocos2d-x 高级开发教程》读书笔记1:内存管理

《Cocos2d-x 高级开发教程》读书笔记1:内存管理 现有智能内存管理技术 引用计数 可以说这种方法使用还是比较广泛,之前在读android源码时也发现是使用这种方法。其原理理解下来就...

《江湖X》开发那些事 - 1.开篇

【江湖X】游戏开发技术解析 系列博客——开篇
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:x=x+1、x+=1和x++的不同
举报原因:
原因补充:

(最多只允许输入30个字)