自动类型转换(隐式类型转换)
满足条件:
- 两种类型之间相互兼容
- 目标类型大于源类型(即类型提升)
数据类型转换之默认转换
byte,short,char – int – long – float – double
强制类型转换(显式类型转换)
满足条件
-
两种类型必须兼容,且目标类型大于源类型
例如: byte、char和short类型都可以提升为int型。byte,short,char之间不相互转换 -
对于表达式而言,其最终结果将会与表达式中最高的数据类型相同。
举例:
int x = 65;
char ch = x;
//这样的语句将报错,
//因为char类型精度低于int类型,编译器无法将其自动转换,只能进行强制转换:
int x = 65;
char ch = (char)x;
注意
- 整数默认类型是int类型,浮点数默认是double
- 单精度的浮点数后缀要加F或者f
举例1
int age = 19;
char sex = ‘女’;
char result = age + sex; (int 不可以自动转换成char) //精度损失
举例2
int a = 10;
int b = 10.2; //错误定义
double c =10;
c = a;
int d = c;//double 不可以自动转化成int
举例3
int n=123456789;
float f=n; //f=1.23456792E8 精度损失