自动类型转换
在 Java 语言中操作数值时,满足自动转换关系时,数值可自动转换为目标类型。
比如:
int num = 100200300;
// 结果100200300
long lNum = num;
// 结果1.00200304E8,损失精度
float fNum = num;
// 结果1.002003E8
double dNum = num;
自动转换关系,如下:
byte -> short -> int
char -> int
int -> long
int -> float(损失精度)
int -> double
long -> float(损失精度)
long -> double(损失精度)
二元运算时自动转换规则
两个不同类型数值之间进行二元运算时,会先自动转换时为同一种类型。具体如下:
其中一个为 double 时,优先转换为 double。
否则,其中一个为 float 时,优先转换为 float。
否则,其中一个为 long 时,优先转换为 long。
否则,都转换为 int 类型。
比如:
short m = 2;
byte n = 3;
int z = m * n; // 结果类型应为 int
强制类型转换
当转换类型时,不满足自动转换条件时,可进行强制类型转换。
语法格式是,在预转换的变量前添加一对圆括号,括号内指明目标类型。
double num = 1.1;
int iNum = (int)num; // 结果为1
其它转换情况
bool 类型转换
当需要将 bool 类型转换为数值时,可以使用如下表达:
boolean hasTag = false;
int hasTagNum = hasTag ? 1 : 0;
// hasTagNum 值为0
(全文完)