黑马程序员技术交流社区
标题:
问 +=和直接+的区别
[打印本页]
作者:
安逸小弟
时间:
2015-6-8 23:41
标题:
问 +=和直接+的区别
byte b = 1;b = b + 1;和byte b = 1;b+=1;有什么区别跟问题?
作者:
小田
时间:
2015-6-8 23:43
我也不知道
作者:
灰色水晶梦
时间:
2015-6-8 23:53
前面的会报错的 因为·1默认的是int类型和b相加后的值就是int类型了再赋值给byte 类型变量就会丢失精度。而后面那个会自动进行强制类型转换不会报错。
作者:
途中ms前进
时间:
2015-6-9 11:34
byte b = 1;b = b + 1;强制类型提升会报错
byte b = 1;b+=1赋值运算,java语言会对+=特殊处理 所以是正确的
作者:
路途遥远
时间:
2015-6-9 12:17
遇到这种格式l op= r,比如 I += r
等号右边的会转换为左边的类型。然后再进行运算。
遇到这种格式l= l op r,比如 I = I + r
等号右边的会转化会更高的类型。如byte + int 会转换为int,然后再进行运算
所以如果直接byte b = 1;b = b + 1;会报错,还要进行强制转换b = (byte) (b+1);
但是直接b+=1就不报错了
作者:
mishisanyi
时间:
2015-6-9 12:57
第一个会报错,b+1的时候,会总动转换成int类型,不能赋值给b,第二个不会,由于+=是强制类型转换
作者:
pp7803515
时间:
2015-6-9 13:13
short等格式也一样的,会报错第一个
作者:
yang9876q
时间:
2015-6-9 13:13
第一个,b+1会自动转换成int型,报类型转换错误的异常,第二个不报错
作者:
java8023
时间:
2015-6-9 18:48
第一个自动类型提升,会报错,第二个隐式的强制类型转换
作者:
world.net
时间:
2015-6-9 20:20
类型转换不一样。
作者:
南无ice
时间:
2015-6-9 20:36
这个老师的视频当中有讲过的,左边的 b = b + 1 -->相加之后的类型会成为整型。系统因为丢失精度的原因会报错。而+=为一次运算,讲左右两边的值赋给左边。不会出现错误。也更为方便。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2