数据类型转换
数据类型的转换是在所赋值的数值类型和被变量接收的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。数据类型的转换分为两种:
隐式转换(自动类型转换)
显式转换(强制类型转换)
隐式转换(自动类型转换)
如果以下 2 个条件都满足,那么将一种类型的数据赋给另外一种类型变量的时,将执行自动类型转换(automatic type conversion)。
两种数据类型彼此兼容
目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)
在运算过程中,由于不同的数据类型会转换成同一种数据类型,所以整型、浮点型以及字符型都可以参与混合运算。自动转换的规则是从低级类型数据转换成高级类型数据。转换规则如下:数值型数据的转换:byte→short→int→long→float→double。字符型转换为整型:char→int。
public static void main(String[] args){
//数字类型转换
byte a=20;
//short比byte 范围大,兼容
short b=a;
int c=b;
long d=c;
float e=c;
float e2=d;
//类型转换 20是int型 向double转换 兼容
double db=20;
//字符型装欢成整型
char ch = 'a';
int in=a;
long lo=a;
float ft=a;
double de=a;
}
显式转换(强制类型转换)
尽管自动类型转换是很有帮助的,但并不能满足所有的编程需要。例如,如果你需要将 double 型的值赋给一个 int 型的变量,你将怎么办?这种转换不会自动进行,因为 double 型的变化范围比int 型的要小。这种转换有使成为“缩小转换”,因为你肯定要将源数据类型的值变小才能适合目标数据类型。
public static void main(String[] agrs){
int it=12;
byte by =(byte)it;
System.out.println(by);
//隐藏的问题 如果目标类型存储不了转换的值 就会出现数据丢失的情况
int it2 =200; //超出byte类型的范围
byte by2=(byte)it2;
System.out.println(by2);
//浮点型转换为整型
//因为目标类型是整型 所以只能取到小数点前的整数 小数点后的数据会丢失
double d=12.8;
int it3=(int)d;
System.out.println(it3);
//字符转换为整型
char ch='c';
int it4= ch;
System.out.println(it4);
byte by3=(byte)ch; //未超出范围
System.out.println(by3);
}
![](https://img-blog.csdnimg.cn/img_convert/7157cb499231ea8b3bc2c876ac438da4.png)