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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李成航 中级黑马   /  2012-3-19 18:15  /  1430 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

。。。。。
s=s+8;//
s+=8;//

有时候这两个等价,有时候又不一样

3 个回复

倒序浏览
你感觉何时两者不等价?
回复 使用道具 举报
s=s+8;当S不是int型时,就存在自动类型提升,结果有失精度。
而S+=8.本身有种转换的功能,在内部自己转换,不会出现有失精度。
回复 使用道具 举报
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是什么类型了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马