Java语言中,当参与运算的两个变量的数据类型不同时,则需要进行数据类型的转换。
★转换规则:
(1)类型自动转换 / 隐式数据类型转换
● 低级数据类型可以自动转换为高级数据类型。
PS:优先级满足byte<short<char<int<long<float<double
● 在进行类型自动转换时,需要注意以下几个方面:1) boolean类型和基本数据类型不能进行相互转换;
2) byte、short、char类型的数据在参与运算时,会自动的转换为int型。
But:当使用“+=”时,不会产生类型转换
Eg:
错误写法:
Short s1 = 1;
s1 = s1 + 1; //编译器报错,因为运算时,会将s1转换为int型,与1相加
正确写法:
Short s1 = 1;
s1 = (short)(s1 + 1);
● char类型的数据转换为高级类型时,会转换为其对应的ASCII码。
(2)强制类型转换
当需要从高级数据类型转换为低级数据类型时,就需要进行强制类型转换。
Tips:
强制数据类型的转换可能会引起进度的损失。
★举例:
public class ZhuanHuan{
public static void main(String[] args){
int a = 6;
float f = a;
System.out.pritnln(f);//自动类型转换,输出6.0
byte b = 9;
//char c = b; //不能实现类型转换
double d = b;
System.out.pritnln(d);//自动类型转换,输出9.0
}
}
public class QiangZhuan{
public static void main(String[] args){
double d = 2.98;
int i = (int)d;
System.out.pritnln(i);//强制类型转换,输出2
}
}