跳到主要内容

Java 类型转换

提示
  1. 基本概念:Java类型转换是将一个数据类型(如 int, float, double 等)的值转换为另一种数据类型的过程。
  2. 扩宽类型转换:自动发生,无需显示转换代码,将较小数据类型(如 int)转换为较大数据类型(如 double)时不会丢失数据。
  3. 缩小类型转换:需要显式转换,如用圆括号将较大数据类型(如 double)转换为较小数据类型(如 int),可能会导致数据丢失。

在了解 Java 类型转换 之前,请确保您了解 Java 数据类型

类型转换

将一个数据类型(intfloatdouble 等)的值转换为另一种数据类型的过程被称为类型转换。

在 Java 中,有 13 种类型的类型转换。然而,在本教程中,我们只关注两种主要类型。

  1. 扩宽类型转换(Widening Type Casting)

  2. 缩小类型转换(Narrowing Type Casting)

要了解其他类型的类型转换,请访问 Java 类型转换(官方 Java 文档)

扩宽类型转换

扩宽类型转换 中,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

在上述示例中,我们将名为 numint 类型变量赋值给名为 datadouble 类型变量。

在这里,Java 首先将 int 类型的数据转换为 double 类型,然后将其赋值给 double 变量。

扩宽类型转换 的情况下,较低的数据类型(大小较小)被转换为较高的数据类型(大小较大)。因此,数据不会丢失。这就是为什么这种类型的转换会自动发生。

注意:这也被称为 隐式类型转换

缩小类型转换

缩小类型转换 中,我们使用圆括号手动将一种数据类型转换为另一种数据类型。

示例:将 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

在上述示例中,我们将名为 numdouble 类型变量赋值给名为 dataint 类型变量。

注意这一行,```java int data = (int)num;


在这里,圆括号内的 `int` 关键字表明 `num` 变量被转换为 `int` 类型。

在 **缩小类型转换** 的情况下,较高的数据类型(大小较大)被转换为较低的数据类型(大小较小)。因此会丢失数据。这就是为什么这种类型的转换不会自动发生。

**注意**:这也被称为 **显式类型转换**。

让我们看一些 Java 中其他类型转换的示例。

## 示例 1:从 int 到 String 的类型转换

```java exec
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 的异常。