【Java SE】类型转换
类型转换是将一个值从一种类型转换为另一种类型的过程。该过程如果从低精度数据类型转为高精度数据类型,则不会发生溢出并且总能成功,如果从高精度数据类型转为低精度数据类型,则会有信息丢失且可能失败。类型转换又可分为隐式转换和显式转换两种。
😺 隐式转换
从低精度类型向高精度类型的转换,该过程系统自动进行。数据类型按精度从低到高排序的顺序为:
//(1) char < int < long < float < double
//(2) byte < short < int < long < float < double
细节说明:
(1)多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
(2)(byte,short)
和char
之间不会互相自动转换。
byte b = 1;
// 错误示范:char c = b; 不能自动转换!
(3)byte
、short
和char
三者可以一起参与计算,在计算时首先转换为int
类型(编译器规定的)。
byte b = 1;
short s = 1;
int i = b + s // 声明的类型不能是 short,否则会报错!
(4)boolean
不参与转换。
😽 显式转换
从高精度类型向低精度类型的转换,是隐式转换的逆过程,使用时需要加上强制转换符()
,当可能会造成精度降低或溢出,具体语法如下:
// (类型名)要转换的值,例如:
int i = (int)1.9;
细节说明:
(1)强转符号只针对最近的操作数有效,往往使用小括号提升优先级。
(2)char
类型可以保存int
常量值(字面量),但不能保存int
变量值,需强转。
// 常量可保存
char c1 = 100;
// 变量需强转
int i = 100;
char c2 = (char)i;