在学习 Java 类型转换之前,请确保你已经了解 Java 数据类型。
什么是类型转换?
将一个数据类型(如 int、float、double 等)的值转换为另一个数据类型的过程,称为类型转换(Type Casting)。
在 Java 中,共有 13 种类型转换方式。但在本教程中,我们只重点介绍其中最主要的两种:
- 拓宽类型转换(Widening Type Casting)
- 缩窄类型转换(Narrowing Type Casting)
若想了解其他类型的转换方式,请参阅 Java 官方文档中的类型转换说明。
拓宽类型转换(Widening Type Casting)
在拓宽类型转换中,Java 会自动将一种数据类型转换为另一种数据类型。
示例:将 int 转换为 double
class Main {
public static void main(String[] args) {
// 创建 int 类型变量
int num = 10;
System.out.println("整数值: " + num);
// 转换为 double 类型
double data = num;
System.out.println("双精度浮点值: " + data);
}
}
输出:
整数值: 10
双精度浮点值: 10.0
在上面的例子中,我们将名为 num 的 int 类型变量赋值给名为 data 的 double 类型变量。
注意:Java 首先将 int 类型的数据转换为 double 类型,然后再赋值给 double 变量。
在拓宽类型转换中,较小范围的数据类型(占用空间小)会被自动转换为较大范围的数据类型(占用空间大),因此不会丢失数据。这也是为什么这种转换可以自动完成。
提示:这也被称为隐式类型转换(Implicit Type Casting)。
缩窄类型转换(Narrowing Type Casting)
在缩窄类型转换中,我们需要手动使用括号将一种数据类型转换为另一种。
示例:将 double 转换为 int
class Main {
public static void main(String[] args) {
// 创建 double 类型变量
double num = 10.99;
System.out.println("双精度浮点值: " + num);
// 转换为 int 类型
int data = (int) num;
System.out.println("整数值: " + data);
}
}
输出:
双精度浮点值: 10.99
整数值: 10
在上面的例子中,我们将名为 num 的 double 类型变量赋值给名为 data 的 int 类型变量。
注意这行代码:
int data = (int) num;
其中括号内的 (int) 表示将 num 变量强制转换为 int 类型。
在缩窄类型转换中,较大范围的数据类型(如 double)被转换为较小范围的数据类型(如 int),因此可能会丢失数据(例如小数部分被截断)。正因如此,这种转换不能自动进行,必须显式指定。
提示:这也被称为显式类型转换(Explicit Type Casting)。
其他类型转换示例
示例 1:将 int 转换为 String
class Main {
public static void main(String[] args) {
// 创建 int 类型变量
int num = 10;
System.out.println("整数值是: " + num);
// 将 int 转换为 String
String data = String.valueOf(num);
System.out.println("字符串值是: " + data);
}
}
输出:
整数值是: 10
字符串值是: 10
在上述程序中,注意这一行:
String data = String.valueOf(num);
这里我们使用了 Java String 类的 valueOf() 方法,将 int 类型变量转换为字符串。
示例 2:将 String 转换为 int
class Main {
public static void main(String[] args) {
// 创建 String 类型变量
String data = "10";
System.out.println("字符串值是: " + data);
// 将 String 转换为 int
int num = Integer.parseInt(data);
System.out.println("整数值是: " + num);
}
}
输出:
字符串值是: 10
整数值是: 10
在上面的例子中,注意这一行:
int num = Integer.parseInt(data);
这里我们使用了 Java Integer 类的 parseInt() 方法,将字符串变量转换为 int 类型。
注意:如果字符串无法被解析为整数(例如包含字母或符号),则会抛出
NumberFormatException异常。