黑马程序员技术交流社区

标题: x=x+2和x+=2的区别? [打印本页]

作者: 李阳    时间: 2013-1-10 12:59
标题: x=x+2和x+=2的区别?
本帖最后由 李阳 于 2013-1-10 15:17 编辑

short x;
x=x+2;//x+=2;
我知道他们不一样,但说不出为神马,求解释!
悲催的屌丝一会要去搬砖了,不知道什么时候能回来!我要加油进黑马!
作者: 黑马斯巴达    时间: 2013-1-10 13:08
这个很简单。。就是x=x+2需要两个操作符。而后面的只需要一个
前面的有可能造成类型不同,造成错误比如x是整型=后面超过整型数值
后面的可以自动类型转换更安全
只记得的这些啦
作者: 祝文丞    时间: 2013-1-10 13:24
前者需要执行2次运算,后者只需要一次。
当类型不同时,运行后者就不会出现,转换问题。
byte b=3;
b=b+2;    这里B就会执行自动类型提升。就会损失精度报错,解决办法
b=(byte)(b+2);
如果只用b+=2;
则是一次运算,不会自我提升。


作者: 肖亚光    时间: 2013-1-10 13:34
哇塞  学习了
作者: 李阳    时间: 2013-1-10 15:16
谢谢各位热情回答
作者: 詹卓锋    时间: 2013-1-10 21:05
具体看:毕向东_Java基础视频教程第02天-11-赋值和比较运算符
发现很多人也不懂这个,我也有时糊涂。。

6598217656796055233.jpg (20.61 KB, 下载次数: 92)

6598217656796055233.jpg

作者: 何伟    时间: 2013-1-10 23:17
这是java的隐式转换,这转换是默认的
如果有:byte,short,char 和int一起运算jvm会自动把其他类型转成int,
如果有long类型数据参加运算就会默认转为 long,
如果有float类型数据参加运算会默认转为float
如果有double类型数据参加运算就会默认转换成double
转换规则:byte,short,char -- int -- long -- float -- double
从左到右楼主可以自己测试测试.
                                       
作者: 李润根    时间: 2013-1-11 02:07
大家好像说漏了一点:

x=x+2,可以只写 x+2,没有返回值

但x+=2,一定有返回值
作者: jonn    时间: 2013-1-11 02:33
这个基本就接触到编码进制问题,java作为jvm运行,以jni(java native interface )为纽带了的编程语言,在数据类型进制位数与win/linux 大可不同
LZ的 问题
   short x;
   x=x+2;
   x+=2;
  在java平台中,运行的数据都存在的内存条里,与cpu作交换来运算滴,是临时数据,不会写入外部存储器里,一旦断电数据立刻丢失。内存里都按二进制存放了,
  而显示器上显示的数据表现形式基于十进制,典型的ASCII编码表
  所以  x=x+2  short类型 x 与 整型数据类型 2 进行运算 得到了结果赋值给左边的 x  运行会出现错误,数据类型进行强制转换,向数据存放单位字节大了转换 这里还要注意一点内存溢出了问题
x+=2 呢 其实就是赋值运算左边的x 就自动转换了

LZ 的若 还不懂,请 直接 QQ 我  ^ ^






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2