黑马程序员技术交流社区

标题: 求详解这两个运算的区别 [打印本页]

作者: 李成航    时间: 2012-3-19 18:15
标题: 求详解这两个运算的区别
。。。。。
s=s+8;//
s+=8;//

有时候这两个等价,有时候又不一样
作者: 陈从宾    时间: 2012-3-19 18:20
你感觉何时两者不等价?

作者: 叶绍亮    时间: 2012-3-19 18:24
s=s+8;当S不是int型时,就存在自动类型提升,结果有失精度。
而S+=8.本身有种转换的功能,在内部自己转换,不会出现有失精度。
作者: 冯建鹏    时间: 2012-3-19 18:47
s=s+8;// 当s为int值时,和s+=8是一样的,当s不为int值时,这个时候就涉及到类型转换问题,因为java默认数字都是int类型的,如果s为byte short 类型的话s+8这个时候s+8的值为int类型的,会自动提升为高级类型,但是s是byte 或者short类型的话,把一个int类型的数赋值给byte或者short类型的值会出现损失精度,如果就像再将结果赋值给s的话可这样写 s=(数据类型)(s+8);
s+=8;//这句话java可以自动转换,所以这句话就不用关s是什么类型了。





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