本帖最后由 依然 于 2013-12-10 16:10 编辑
运行结果是只有b的结果会警告丢失精度。
a. byte b = 1 + 1; 这个算中是先执行1+1 结果为2,而把2赋值给b,所以正确(2可以在byte可以表示的范围内)。
b. byte b = 1; b = b + 1; 在执行b+1的时候会警告会丢失精度,因为b是byte类型,1是int类型,在进行加减等运算时候,jvm会先把b转换成int,int+1的结果也是int,把int类型赋值给byte会存在丢失精度。c. byte b = 1; b = b += 1; 运行过程是先b+1=2 后执行b=2,最后执行b=2.
d. byte b = 1; b = ++b; 运行过程是先++b,结果为2,而后b=2进行赋值,期间不存在int强转为byte的问题。
|