黑马程序员技术交流社区
标题:
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)
下载附件
2013-1-10 21:05 上传
作者:
何伟
时间:
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