基本数据类型转换 (自动类型转换、强制类型转换)

自动类型转换(默认转换)
把一个范围小的数值或变量直接赋值给另一个数据范围大的变量时,系统可以进行自动类型转换。
注意:不能将数据范围大的变量或数值赋值给范围小的变量,例如:int a = 25; byte b = a; 会直接报错。
自动转换顺序:byte->short->int->long->float->double-> char
这里byte,short,char他们参与运算时首先会自动转换成大范围类型再参加运算。有int类型就转换成int类型,有long类型的就转换成long类型再参加运算。
long:8个字节,float:4个字节 。那为什么float要比long的范围大呢?
基本数据类型转换 (自动类型转换、强制类型转换)
图片截取自https://www.cnblogs.com/lzc55555/p/11465051.html

强制类型转换
将大范围的数据向小范围的数据进行转换则需要进行强制转换。
语法格式为:类型 变量名称 = (targetType)value;
例如:
float f = 12.5F;
int e = (int)f; //变量e的值为整数12,不会保留小数
别随意使用强制类型转换,因为强制类型转换隐藏着一个精度丢失的问题。
如果大范围的数据值超过了小数据的范围,则按位进行截取。
int a1 = 336; // 0000 0000 0000 0000 0000 0001 0101 0000
byte b1 = (byte)a1; //8位 截取后8位 0101 0000
System.out.println(b1);