在Java的世界中,有一些数据类型之间是可以相互转换的。一种是自动类型转换,一种是强制类型转换。
一、自动类型转换
我们先从自动类型转换开始讲起。当我们把一个能表示的数据范围较小的数值或者变量,赋值给另外一个能表示的数据范围较大的变量时,会发生自动类型转换。我们以实例说明:
double a = 7; // 将int类型的7直接赋值给double类型的变量
System.out.println(a); // 输出7.0
说明:数字7是int类型,当赋值给double类型的变量a时,从输出可以看到,a的值时7.0,说明此时已经发生了自动类型转换。
二、强制类型转换:
应用场景:把一个表示数据范围较大的数值或者变量赋值给另外一个表示数据范围较小的变量,此时就需要强制类型转换。
强制类型转换的格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
例子:
double a = 7.7;
int b = (int) a; // 将double类型的a强制转换为int类型
System.out.println(b); // 输出7(小数位直接舍弃)
几点说明:
1、char类型的数据转换为int类型是按照码表中对应的int值进行计算的。比如在ASCII码表中,'a'对应97。
int a = 'a';
System.out.println(a); // 将输出97
2、整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型。
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2;
// 第三行代码会报错,b1和b2会自动转换为int类型,计算结果为int,int赋值给byte需要强制类型转换。
// 修改为:
int num = b1 + b2;
// 或者:
byte b3 = (byte) (b1 + b2);
- boolean类型不能与其他基本数据类型相互转换。
三、数据范围表
最后,给出一张数据范围表,从小到大:

网友评论