A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李阳 中级黑马   /  2013-1-10 12:59  /  2185 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李阳 于 2013-1-10 15:17 编辑

short x;
x=x+2;//x+=2;
我知道他们不一样,但说不出为神马,求解释!
悲催的屌丝一会要去搬砖了,不知道什么时候能回来!我要加油进黑马!

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 赞一个!

查看全部评分

10 个回复

倒序浏览
这个很简单。。就是x=x+2需要两个操作符。而后面的只需要一个
前面的有可能造成类型不同,造成错误比如x是整型=后面超过整型数值
后面的可以自动类型转换更安全
只记得的这些啦

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
前者需要执行2次运算,后者只需要一次。
当类型不同时,运行后者就不会出现,转换问题。
byte b=3;
b=b+2;    这里B就会执行自动类型提升。就会损失精度报错,解决办法
b=(byte)(b+2);
如果只用b+=2;
则是一次运算,不会自我提升。

点评

赞一个!  发表于 2013-1-10 16:29

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
哇塞  学习了
回复 使用道具 举报
谢谢各位热情回答
回复 使用道具 举报
具体看:毕向东_Java基础视频教程第02天-11-赋值和比较运算符
发现很多人也不懂这个,我也有时糊涂。。

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

6598217656796055233.jpg
回复 使用道具 举报
何伟 中级黑马 2013-1-10 23:17:19
7#
这是java的隐式转换,这转换是默认的
如果有:byte,short,char 和int一起运算jvm会自动把其他类型转成int,
如果有long类型数据参加运算就会默认转为 long,
如果有float类型数据参加运算会默认转为float
如果有double类型数据参加运算就会默认转换成double
转换规则:byte,short,char -- int -- long -- float -- double
从左到右楼主可以自己测试测试.
                                       
回复 使用道具 举报
大家好像说漏了一点:

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

但x+=2,一定有返回值
回复 使用道具 举报
jonn 高级黑马 2013-1-11 02:33:46
9#
这个基本就接触到编码进制问题,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 我  ^ ^

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马