数据类型转换
基本概念
强制类型转换,可以理解为自动类型转换的逆过程,是将大容量的数据类型转换为小容量的数据类型,使用时在前面加上强制转换符号“()”;
应用场景
需要将数据从高精度数据类型转换为低精度数据类型。(即高精度类型的数据不能直接赋值给低精度数据)
JAVA中数据类型的精度从高到低的顺序为:
-
byte
-
short
-
char
-
int
-
long
-
float
-
double
注意点
-
运算中,不同类型的数据是先转换为同一类型然后再运算
-
boolean类型是不可以进行转换的
-
不能把对象类型转换为不相干的类型
-
高容量类型转低容量的时候需要用强制转换
-
转换的时候可能存在内存溢出,或者精度问题!
代码演示
int i = 128; byte b = (byte)i; System.out.println(b); //这里内存已经溢出,会变成不一样的数据 byte的范围是(-128-127) System.out.println("========================"); i = b; // 这里可以不用强制转换符,从低到高是自动隐式转换的 System.out.println(i); System.out.println("========================"); float f1 = 12.56f; double d1 = 45.78; System.out.println((int)d1);// 转换后精度缺少 System.out.println((int)f1);// 转换后精度缺少 System.out.println("========================"); char c1 = 'a'; int i1 = c1+1; System.out.println((char)i1); //在ASCII码对应表中找到对应整数的字符
JAVA JDK7 拓展
int money = 10_0000_0000;// jdk7的新特性 可以在数字之间加下划线了 int years = 20; int total = money*years;// 内存溢出 long total = money*(long)years; // 运算的时候已经出问题了,解决方法就是先转换 System.out.println(total);