自动类型转换
精度小的类型可以自动转换为精度大的类型
精度大小排序
char<int<long<float<double
byte<short<int<long<float<double
两条线,分别可以进行自动类型转换
char不会自动转为byte或者short
布尔型不进行转换
char a = 'a';
int b = 100;
long c = 20;
float d = 1.2f;
double e = a+b+c+d;
System.out.println(e);//218.1999969482422
// 浮点数在内存中的存储与整数不同,所以计算后精度上存在细小的误差
byte a = 10;
short f = 15;
int b = 100;
long c = 20;
float d = 1.2f;
double e = a+b+f+c+d;
System.out.println(e);//146.1999969482422
// 浮点数在内存中的存储与整数不同,所以计算后精度上存在细小的误差
多种精度的类型数值进行运算时,会将所有成员自动转化为成员中最大精度的那个类型,再进行运算,最终结果的类型就是成员中最大精度的类型。(以下情况除外)
byte,short,char 这3个类型进行运算时转为int类型,运算后只能赋值给int或者比int精度更高的类型
byte a = 1;
short b = 2;
short c = a + b; //报错
int c = a + b;//3
如果+号两边有字符串,那么就是自动转化为字符串进行连接
int a = 100;
System.out.println("100"+a);//100100
强制类型转换
不符合自动转换类型的条件,可以进行强制类型转换
float a = (float)1.124;
int b = 100;
byte a = (byte)b;
System.out.println(a);
float c = 3.1f;
c = (float) (b+3.2);
System.out.println(c);
强制类型转换的优先级较高