本帖最后由 卜弦 于 2013-10-23 10:06 编辑
楼主是不是看了数据类型转换部分有这些疑问的?是不是觉得等号右边是int左边是byte但是计算却没有报错是吧?
我当时看着一部分也有类似的疑问。
首先,你要明确一点,在数据范围类的一次性运算是不会存在类型转换问题的。
你问的这三种情况都是属于一次性运算。没有进行变量的存储而是只有赋值。这些情况java虚拟机会自动调整数据类型。
说具体一点:
b++对变量b而言只有一步操作b+1
b+=1也只有一步操作,把b+1的值赋给b。注意这里如果改为b=b+1,那就有两部操作,先b+1,它们的和会自动提升为int,然后再赋值,这时就会报错会损失精度。
b=1+1 更没什么好说的。
总结一点 单纯的数据运算,在不涉及变量参与时候,只要运算结果不超过数据类型范围,数据会根据存储需要自动调整数据类型。
在涉及到变量参与的运算要判断有没有数据存储在其中,因为往往会伴随着数据类型的提升。
再给你来个例子吧
byte b1=3,b2=4,b;//第一句
b=b1+b2;//第二句
b=3+4;//第三句
这三句话那句回编译出错呢? 如果你回答第二句,那恭喜你,你已经明白了。
如果还是不明白再去堪比老师视频吧。。。。。。。。
|