24-类型转换-自动类型转换
将一个变量从一个类型改为另外一种类型的过程。例如字符串的”1″改变为整数的1。
如果占用的内存空间小的数转为较大内存空间的数,程序会自动转换,不需要写代码实现。反之则需要强制类型转换(需要写代码实现)。
比如计算float和int的和的时候,程序会先把int转换为float,然后再计算他们的和。
byte < short < char < int < long < float < double
空间是后面的大于前面的。
练习
定义 byte、int、float、double、char 这些变量并赋值,然后计算他们的算术运算的结果。
byte b = 127;
int i = 128; //这里发生了自动类型转换 byte转为int类型
//byte b2 = i; //但是把int转为byte 则可能会溢出 所以报错
byte b2 = (byte)i; //强制类型转换 结果可能是错的
long l = i;
float f = l;
double d = f;
//float f2 = d; //double转float需要强制类型转换
System.out.println(b2);Code language: JavaScript (javascript)
25-强制类型转换
占的内存空间大的转为内存空间小的,则需要显式类型转换(强制类型转换)。
强制类型转换用 (类型)变量 的式子转换。
如果强制类型转换的时候数据比较大,则可能会溢出,溢出则得到的数可能不正确。
比如把short类型转换为byte类型的时候,byte最大是127。
Boolean类型不能转换为其他类型,反过来也是。
int i = 128;
//byte b2 = i; //把int转为byte 则可能会溢出 所以报错
if (i > 127) {
System.out.println("i的值已经大于127了,这里发生溢出了。");
return;
}
byte b2 = (byte)i; //强制类型转换 结果可能是错的Code language: JavaScript (javascript)