byte,char,short 类型相加为整形问题
a+b是结果是int类型,因为在java虚拟机的指令集中大部分指令都没有支byte,char,short等类型编译器在编译期或者运行期都将byte和short类型的数据扩展为int类型数据.
public class zhuanhuan {
public static void main(String[] args) {
short a=1;
short b=2;
System.out.println("原short类型:"+getType(a+b));
char c=2;
char d=3;
int l=a+d;
System.out.println("原char类型:"+getType(a+d)+l);
byte e=1;
byte f=1;
System.out.println("原char类型:"+getType(e+f));
short h=9999;
System.out.println(Integer.toBinaryString(h));
System.out.println((byte)h);//强制转换会遇到转换错误的问题 这是因为byte数据是8 short是32 会出现转换问题 所以强制转换时 要注意
}
//获取对象类型方法
private static String getType(Object a) {
// TODO Auto-generated method stub
return a.getClass().toString();
}
}