1、自动类型转换
java所有数值类型都支持数据类型转换,如果系统支持把某种数据类型赋值为另一种类型,这种叫做自动转换,把数值范围小的数值,转换为数值大的类型可以自动转换,转换为小的数据类型需要强制转换。
byte a = 10;
short b = a;
int c = b;
long d = c; //不会报错
2、强制类型转换
上面的列子告诉我们自动类型转换系统可以自动转换如果大数据类型往小类型转换呢。
int b = 100;
byte a = (byte) b;
如果baty a = 100 转换为int类型没有问题,值不变,数据范围会增大,如果int b = 200转换为byte类型就会出问题int b 的值会发生改变,byte的最大数值就是127,转换后就会出现问题。
表达式的自动提升
byte b = 100;
byte a = b-3;
上面代码会报错,为什么呢,我们正常看来应该没有问题但是报错了,因为b-3,3系统默认的是int类型运算完后值会自动往上提升,变成int类型,以小的数据类型表示所以报错了。
一个小的数值和大的数据类型做四则运算值会自动往上转换
坑
int b = 3;
int a = 2;
System.out.println(b/a);
上面的运算结果是1
为什么是1呢,因为b是int类型a也是int类型,运算的结果也是int类型,int类型是整型系统只会取整数部分1不会四舍五入小数部分就被舍去了,如果想要得到正确的内容需要把结果强制转换double类型。