JAVA 类型的类型转换
一、基本类型的类型转换
箭头开始的地方是小类型,箭头指向的地方是大类型
我们此处所指的"大"和"小",指的是对应类型的取值范围,不是字节数哦
1.1 小到大(隐式转换)
byte m = 120;
int n = m;//小转大,右面的m是小类型,给左面的n大类型赋值,可以直接使用
float f = 3.2f; double d = f; -->可以执行
1.2 大到小(显式转换)
容量大的类型转换为容量小的类型时必须使用强制类型转换。
int x = 999;
byte y =(byte)x;//大转小,右面x给左面的y小类型赋值,不可以,需要强制类型转换
转换过程中可能导致溢出或损失精度
例如:int i =128; byte b = (byte)i; //打印的结果是-128
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
例如:float f = 32.7f; int a2 =(int) f; //打印的结果是32
不能对boolean类型进行类型转换。
1.3 口诀:
小到大,直接转 大到小,强制转 浮变整,小数没
低 ------------------------------------> 高
byte,short,char→ int→ long→float→double
1.4 案例代码
package cn.tedu.basic2;
/**本类用于测试类型转换*/
public class Demo2 {
public static void main(String[] args) {
/**1.小到大 直接转*/
byte a = 120;
int b =a;//小类型byte的值可以直接赋值给大类型int
float f = 3.14F;
double d = f;//小类型float的值可以直接赋值给大类型double
/**2.大到小,强制转*/
int x1 = 120;
int x2 = 128;
byte y1 = (byte) x1;//大类型int赋值给小类型byte需要强制类型转换
byte y2 = (byte) x2;//大类型int赋值给小类型byte需要强制类型转换
System.out.println(y1);//x必须在byte的范围之内,否则数据就会溢出错误
System.out.println(y2);//x必须在byte的范围之内,否则数据就会溢出错误
/**3.浮变整,小数没*/
double dd = 6.999;
int ii = (int)dd;
System.out.println(ii);
}
}