目录
题目
分析此代码的结果
分析
1.报错
byte类型无法直接相加减,当出现运算时,会默认将其转化为int类型数据
public static void main(String [] args){
byte b1= 67;
byte b2= 89;
System.out.println(getType(b1+b2));
}
//定义一个返回数据类型的函数
private static String getType(Object a) {
return a.getClass().toString();
}
输出:class java.lang.Integer
可以看出byte类型的b1、b2相加得到的结果是int类型的。图中b3定义的byte类型,所以报错
2.改正
①将b3改为int类型
public static void main(String [] args){
byte b1= 67;
byte b2= 89;
int b3=b1 + b2;
System.out.println(b3);
}
输出:156
②将b1+b2强制转换为byte类型
public static void main(String [] args){
byte b1= 67;
byte b2= 89;
byte b3=(byte)(b1 + b2);
System.out.println(b3);
}
输出:-100
原因:byte类型数据的取值范围是-128~127,溢出后作用效果相当于-128~127构成闭环数据(实际上是二进制转换的问题)