类型转换
在类型转换之前还是得先了解各个类型的字节
单位:字节
byte short int long float double
1 2 4 8 4 8
1.自动类型转换
规则:字节小的类型转向字节大的类型
[1]例子1
byte b=3;
int x=1;
x=x+b;
运行下来这是正确的。就好比杯子里的水,装到水壶里面是可以的。
所以按照字节来
4=4+1; //1是比4小的,所以可以进行自动类型转换
[2]例子2
byte b=3;
b=b+1;
运行下来却是错误的。1是整型,默认数据类型为int,就好比水壶里的水,硬要装到被子里,会洒出来。
所以按照字节来
1=1+4;//4比1大,所以无法进行自动类型转换。
[3]例子3
byte b=3;
运行下来正确。为什么3是int类型,而b是byte类型,就可以进行赋值呢?
首先3是在byte的范围之内,所以在赋值的时候,编译器就已经将3划在byte的范围之内,将前面的3个字节给去掉了
其次,3是常量,例子2里边,b+1它是变量,是有可能丢失精度的。如果b是127,b+1,就错了。
2.强制类型转换
[4]例子4
拿例子2举例
byte b=3;
b=b+1;
上面说了自动转换会导致
1=1+4;
自动类型转换后
1=4+4;
byte=int
就出错了,需要用到强制类型转换
b=(byte)(b+1);
但是可能会丢失精度,如b=(byte)(b+1000)