# Java 程序：交换两个数字

> 原文： [https://www.programiz.com/java-programming/examples/swap-two-numbers](https://www.programiz.com/java-programming/examples/swap-two-numbers)

#### 在此程序中，您将学习两种在 Java 中交换两个数字的技术。 第一个使用临时变量进行交换，而第二个不使用任何临时变量。

## 示例 1：使用临时变量交换两个数字

```java
public class SwapNumbers {

    public static void main(String[] args) {

        float first = 1.20f, second = 2.45f;

        System.out.println("--Before swap--");
        System.out.println("First number = " + first);
        System.out.println("Second number = " + second);

        // Value of first is assigned to temporary
        float temporary = first;

        // Value of second is assigned to first
        first = second;

        // Value of temporary (which contains the initial value of first) is assigned to second
        second = temporary;

        System.out.println("--After swap--");
        System.out.println("First number = " + first);
        System.out.println("Second number = " + second);
    }
}
```

运行该程序时，输出为：

```java
--Before swap--
First number = 1.2
Second number = 2.45
--After swap--
First number = 2.45
Second number = 1.2
```

在上述程序中，将要交换的两个数字`1.20f`和`2.45f`存储在变量中：分别为`first`和`second`。

交换之前使用`println()`打印变量，以在交换完成后清楚地看到结果。

*   首先，将`first`的值存储在变量`temporary`（`temporary = 1.20f`）中。
*   然后，将`second`的值存储在`first`（`first = 2.45f`）中。
*   并且，最终将`temporary`的值存储在`second`（`second = 1.20f`）中。

这样就完成了交换过程，并且变量被打印在屏幕上。

请记住，`temporary`的唯一用途是在交换之前保持`first`的值。 您也可以不使用`temporary`交换数字。

* * *

## 示例 2：交换两个数字而不使用临时变量

```java
public class SwapNumbers {

    public static void main(String[] args) {

        float first = 12.0f, second = 24.5f;

        System.out.println("--Before swap--");
        System.out.println("First number = " + first);
        System.out.println("Second number = " + second);

        first = first - second;
        second = first + second;
        first = second - first;

        System.out.println("--After swap--");
        System.out.println("First number = " + first);
        System.out.println("Second number = " + second);
    }
}
```

运行该程序时，输出为：

```java
--Before swap--
First number = 12.0
Second number = 24.5
--After swap--
First number = 24.5
Second number = 12.0
```

在上面的程序中，我们使用简单的数学来交换数字，而不是使用临时变量。

对于该操作，`(first - second)`的存储很重要。 首先将其存储在变量``中。

```java
first = first - second;
first = 12.0f - 24.5f
```

然后，我们只需在`first`（`12.0f - 24.5f`）**后面加上**`second`（`24.5f`），即可交换该数字。

```java
second = first + second;
second = (12.0f - 24.5f) + 24.5f = 12.0f
```

现在，`second`保持`12.0f`（最初是第一值）。 因此，我们从交换的`second`（`12.0f`）中减去计算出的`first`（`12.0f - 24.5f`），以获得其他交换数。

```java
first = second - first;
first = 12.0f - (12.0f - 24.5f) = 24.5f
```

交换的号码使用`println()`打印在屏幕上。