黑马程序员技术交流社区
标题:
java基础 基本数据类型部分,请教
[打印本页]
作者:
蓝墨清幽
时间:
2015-4-11 23:21
标题:
java基础 基本数据类型部分,请教
今天看到毕老师的视频
byte b=6;
b=b+2;//这一句不能通过编译,我理解了。因为b是byte型,2为int型
b+=2;//但是这一句为什么能通过编译我还是不理解,请赐教
作者:
上善若水_Wx
时间:
2015-4-11 23:26
b+=2,这里面包含了强制转换~~
作者:
黑马小成
时间:
2015-4-11 23:27
因为赋值运算符,进行赋值时,有用一个强制类型转换自动完成。所以自动转换为int
作者:
飞翔的侠客604
时间:
2015-4-11 23:32
b+=2;直接进行运算,因为里面包含了强制转换。
作者:
waylent
时间:
2015-4-11 23:37
混合赋值操作符(就是+=、-=、<<=这些)的公式
E1 op= E2 等价于 E1 = ( T ) ( ( E1 ) op ( E2 ) )
复制代码
其中T是E1的类型,op是混合赋值运算符
举例来说:
short x=3;
x+=4.6;
复制代码
等价于
short x=3;
x=(short)(x+4.6);
复制代码
参考资料:
Java Language Specification,Third Edition 15.26.2 Compound Assignment Operators
作者:
caotierong
时间:
2015-4-12 01:16
赋值运算符内部自动完成了强转动作,记住这个例子就行!
作者:
xlunaer
时间:
2015-4-12 07:53
好知识点
作者:
段黄军
时间:
2015-4-12 08:09
b+=2它里面自动转换为int类型计算,计算后又自动转换为byte
作者:
minliang
时间:
2015-4-12 08:56
第二句中有个隐式的强制转换动作,记住就行了!
作者:
胡帅
时间:
2015-4-12 09:02
b+=2这里面隐藏了一个强制类型转换,跟b=(byte)(b+2)是一样的
作者:
xu921114
时间:
2015-4-12 11:14
不会 不过确实是个好的疑难点
作者:
saghir
时间:
2015-4-12 11:19
b=b+1是两次运算,b被提升为int型,运算结果为int,无法赋值给byte类型 。b+=2是一次运算,包含了一个隐藏的类型转换,相当于 b=(byte)(b+2)。
作者:
李永佳
时间:
2015-4-12 11:35
第一句是算数运算,第二句是赋值运算,就是这里的区别,导致自动提升的不一样
作者:
Sylvanas
时间:
2015-4-12 12:20
waylent 发表于 2015-4-11 23:37
混合赋值操作符(就是+=、-=、
一目了然啊,好清楚
作者:
lslkkk
时间:
2015-4-12 12:25
是因为“+=”这个符号的原因,它隐含类型转换的功能
作者:
徐顺醒
时间:
2015-4-12 17:47
第二个 赋值运算符 包含了自动转换操作
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2