本文是《Java 入门指南》的第七篇文章,介绍了 Java 的类型转换(自动转换 和 强制转换)。
为什么要进行类型转换?
Java 是一门强类型语言,变量的使用要严格符合规定,所有变量必须先定义之后才能使用。
不同类型的变量进行运算时,要先转换为同一类型,才能进行运算。
在这个过程中,要进行类型转换(自动转换 和 强制转换)。
自动转换
描述:
数据类型从低精度转化为高精度,这个过程自动完成(隐式转换),被称为自动转换。
float 的取值范围大于 int,所以 float 的精度大于 int。
低 ---------------------------------------------------------------------> 高
byte(1字节),short(2字节),char(2字节)—> int(4字节) —> long(8字节)—> float(4字节) —> double(8字节)
实例:
示例代码:
public class Test {
public static void main(String[] args) {
//定义一个变量,变量类型为 char,变量名为 c1。
char c1='a';
//char 自动转换为 int。
int i1=c1;
System.out.println("char 转化为 int 的值:"+i1);
//定义一个变量,变量类型为 char,变量名为 c2。
char c2='A';
//char 自动转换为 int,然后再进行运算。
int i2=c2+1;
System.out.println("char 和 int 运算后的值:"+i2);
}
}
运行结果:
char 转化为 int 的值:97
char 和 int 运算后的值:66
强制转换
描述:
数据类型从高精度转化为低精度,这个过程手动完成,被称为强制转换。
这个过程中,可能存在溢出或损失精度。
格式:(数据类型)变量名 。
实例:
示例代码:
public class Test {
public static void main(String[] args) {
//定义一个变量,变量类型为 int,变量名为 i1。
int i1=128;
//int 强制转换为 byte,而 byte 的最大值为 127,这个过程中会出现溢出。
byte b1=(byte) i1;
//-128。
System.out.println("int 强制转换为 byte 的值:"+b1);
//定义一个变量,变量类型为 float,变量名为 f1。
float f1=3.1415926F;
//float 强制转换为 int,这个过程中会损失精度。
int i2=(int)f1;
System.out.println("float 强制转化为 int 的值:"+i2); //3。
}
}
运行结果:
int 强制转换为 byte 的值:-128
float 强制转化为 int 的值:3
注意事项
- 不能对 boolean 类型进行类型转换。
- 不能把数据类型转换为不相干的数量类型。