# Java 类型转换

> 原文： [https://www.programiz.com/java-programming/typecasting](https://www.programiz.com/java-programming/typecasting)

#### 在本教程中，我们将借助示例来学习 Java 类型转换及其类型。

在学习 **Java 类型转换**之前，请确保您了解 [Java 数据类型](/java-programming/variables-primitive-data-types "Java Data Types")。

* * *

## 类型转换

将一种数据类型（`int`，`float`，`double`等）的值转换为另一种数据类型的过程称为类型转换。

在 Java 中，有 13 种类型转换。 但是，在本教程中，我们将只关注主要的两种类型。

1.加宽类型转换

2.窄类型转换

要了解其他类型的类型转换，请访问 [Java 类型转换（Java 官方文档）](https://docs.oracle.com/javase/specs/jls/se10/html/jls-5.html "Java Type Conversion (official Java documentation)")。

* * *

## 扩展类型转换

在**扩展类型转换**中，Java 自动将一种数据类型转换为另一种数据类型。

### 示例：将`int`转换为`double`

```java
class Main {
  public static void main(String[] args) {
    // create int type variable
    int num = 10;
    System.out.println("The integer value: " + num);

    // convert into double type
    double data = num;
    System.out.println("The double value: " + data);
  }
} 
```

**输出**

```java
The integer value: 10
The double value: 10.0 
```

在上面的示例中，我们将名为`num`的`int`类型变量分配给名为`data`的`double`类型变量。

在这里，Java 首先将`int`类型的数据转换为`double`类型。 然后将其分配给`double`变量。

在**扩展类型转换**的情况下，较低的数据类型（具有较小的大小）将转换为较高的数据类型（具有较大的大小）。 因此，没有数据丢失。 这就是为什么这种类型的转换会自动发生的原因。

**注意**：这也称为**隐式类型转换**。

* * *

## 缩小类型转换

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

### 示例：将`double`转换为`int`

```java
class Main {
  public static void main(String[] args) {
    // create double type variable
    double num = 10.99;
    System.out.println("The double value: " + num);

    // convert into int type
    int data = (int)num;
    System.out.println("The integer value: " + data);
  }
} 
```

**输出**：

```java
The double value: 10.99
The integer value: 10 
```

在上面的示例中，我们将名为`num`的`double`类型变量分配给名为`data`的`int`类型变量。

注意这一行，

```java
int data = (int)num; 
```

在此，括号内的`int`关键字表示将`num`变量转换为`int`类型。

在**缩小类型转换**的情况下，较高的数据类型（具有较大的大小）将转换为较低的数据类型（具有较小的大小）。 因此，存在数据丢失。 这就是为什么这种类型的转换不会自动发生的原因。

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

* * *

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

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

```java
class Main {
  public static void main(String[] args) {
    // create int type variable
    int num = 10;
    System.out.println("The integer value is: " + num);

    // converts int to string type
    String data = String.valueOf(num);
    System.out.println("The string value is: " + data);
  }
} 
```

**输出**：

```java
The integer value is: 10
The string value is: 10 
```

在上面的程序中，注意以下行

```java
String data = String.valueOf(num); 
```

在这里，我们已使用 [Java `String`类](/java-programming/string "Java String")的`valueOf()`方法将`int`类型变量转换为字符串。

* * *

## 示例 2：从`String`到`int`的类型转换

```java
class Main {
  public static void main(String[] args) {
    // create string type variable
    String data = "10";
    System.out.println("The string value is: " + data);

    // convert string variable to int
    int num = Integer.parseInt(data);
    System.out.println("The integer value is: " + num);
  }
} 
```

**输出**：

```java
The string value is: 10
The integer value is: 10 
```

在上面的示例中，请注意以下行

```java
int num = Integer.parseInt(data); 
```

在这里，我们使用 Java `Integer`类的`parseInt()`方法将字符串类型变量转换为`int`变量。

**注意**：如果无法将字符串变量转换为整数变量，则会发生名为`NumberFormatException`的异常。