昨天做的一道面试题中出现了一个关于byte类型数据的运算,问的是这段程序的结果是什么:
A.语句输出13
B.语句:b6=b4+b5编译出错
C.语句:b3=b1+b2编译出错
D.运行抛出异常
我们将这段程序编辑到eclipse后发现只有b3=b1+b2编译出错,所以这道题目的答案是C。接下来我们来分析一下原因:
我们知道在Java中整数默认的数据类型是int类型,当我们直接使用使用byte类型来进行数据运算的时候就要特别注意了,因为两个byte类型的进行运算时jvm会对其进行优化出处理,即将byte类型转化为int来进行数据的运算。所以b1+b2得到的类型是int类型,此次上面程序会出现数据类型转换错误。
解决方法:将这条语句改为b3=b1+b2
但是一定要注意计算两个byte类型的数据时“+”和“+=”是不一样的。
用“+”进行运算:
用“+=”进行运算:
直接用“+”运算符会出现编译错误,但是用“+=”却不会出现编译错误。这是因为“+=”运算符会自动在将运算符右边的数据类型强制性转换位运算符左边的数据类型。