黑马程序员技术交流社区
标题:
s = s+2; s+=2,有区别吗
[打印本页]
作者:
_let'sgo
时间:
2015-11-2 22:06
标题:
s = s+2; s+=2,有区别吗
今天看到这个
short s = 3;
s = s+2; s+=2,有区别吗?不是一样吗?
作者:
didixyy
时间:
2015-11-2 22:09
不一样的 s+=2里面包含了系统带的强制转型 s=(short)s+2
作者:
Mr___dangerous
时间:
2015-11-2 22:10
有区别,+=是一个运算符,运算时不会升类型,+会升类型
作者:
Zzz___冬眠中
时间:
2015-11-2 22:30
+=是运算符 运算符可以自动转换数据类型
作者:
Sayman
时间:
2015-11-2 22:54
类型转换的区别
作者:
顽固派。
时间:
2015-11-2 23:36
首先有一个知识点,就是byte,char,short型变量在进行混合运算时,会自动提升类型为int型,所以s+2的结果是int型,将int型的数值赋值给short型变量s,会出现损失精度的错误.而s+=2在底层,JVM会做强制类型转换的操作,即该式可以看成s = (short)(s + 2),不会编译出错.所以这两个赋值语句是有区别的.
作者:
迷茫不堪的年纪
时间:
2015-11-2 23:40
我帮你讲一下吧, 笨的. short s =3 (声明类型是short-2个字节) , s+=2 (这个属于隐性的转换,就是小转大的时候系统自动提升)其实相当于s=(short)(s+2), s=s+2 会编译错误,需要强转s=(short)(s+2), 一般不介意强转,因为有时候丢精度的
作者:
sshh11
时间:
2015-11-2 23:46
不一样的 s+=2里面包含了系统带的强制转型 s=(short)s+2 强制转换类型!!!不同类型数据占有内存空间不同 数据会有损失
作者:
上帝的寵兒
时间:
2015-11-2 23:53
后面的隐含了一个强制类型转换
作者:
chenhaiqian
时间:
2015-11-3 00:09
不一样, s = s+2会编译失败,因为s+2提升为int相加得到int类型;s+=2不会,因为编译器加了一个(short)强制转换
作者:
窝牛。
时间:
2015-11-3 00:10
都回答的不错
作者:
大自然的搬运工
时间:
2015-11-3 01:50
楼上都是大神
作者:
2209629404
时间:
2015-11-3 11:19
s+=2是有自动强制转换的
作者:
oup
时间:
2015-11-3 13:04
会存在类型转换的问题
作者:
雨魂
时间:
2015-11-3 15:25
后面的隐含了一个强制类型转换
作者:
z_one
时间:
2015-11-3 17:31
不一样,后面的进行了强制转换的步骤
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2