Java 常见例子

无需使用任何临时变量即可交换两个变量的值。该方法涉及使用 +、*、/ 和按位等运算符。

方法 1:使用 + 运算符

在下面的示例中,+ 运算符用于交换两个变量 xy 的值。

public class MyClass {
  static void swap(int x, int y) {
    System.out.println("Before Swap.");
    System.out.println("x = " + x);
    System.out.println("y = " + y);

    //交换技术
    x = x + y;
    y = x - y;
    x = x - y;

    System.out.println("After Swap.");
    System.out.println("x = " + x);
    System.out.println("y = " + y);
  }

  public static void main(String[] args) {
    swap(10, 25);
  }
} 

上面的代码将给出以下输出:

Before Swap.
x = 10
y = 25
After Swap.
x = 25
y = 10 

方法 2:使用 * 运算符

+ 运算符一样,* 运算符还可以用于交换两个变量 xy 的值。

public class MyClass {
  static void swap(int x, int y) {
    System.out.println("Before Swap.");
    System.out.println("x = " + x);
    System.out.println("y = " + y);

    //交换技术
    x = x * y;
    y = x / y;
    x = x / y;

    System.out.println("After Swap.");
    System.out.println("x = " + x);
    System.out.println("y = " + y);
  }

  public static void main(String[] args) {
    swap(10, 25);
  }
} 

上面的代码将给出以下输出:

Before Swap.
x = 10
y = 25
After Swap.
x = 25
y = 10 

方法三:使用/运算符

同样,/运算符也可以用来交换两个值变量xy

public class MyClass {
  static void swap(float x, float y) {
    System.out.println("Before Swap.");
    System.out.println("x = " + x);
    System.out.println("y = " + y);

    //交换技术
    x = x / y;
    y = x * y;
    x = y / x;

    System.out.println("After Swap.");
    System.out.println("x = " + x);
    System.out.println("y = " + y);
  }

  public static void main(String[] args) {
    swap(10, 25);
  }
} 

上面的代码将给出以下输出:

Before Swap.
x = 10.0
y = 25.0
After Swap.
x = 25.0
y = 10.0 

方法4 : 使用按位运算符

按位XOR (^)运算符还可以用于交换两个变量x。当两个操作数中相同位置的两位中的一位为 1 时,返回 1,否则返回 0。

public class MyClass {
  static void swap(int x, int y) {
    System.out.println("Before Swap.");
    System.out.println("x = " + x);
    System.out.println("y = " + y);

    //交换技术
    x = x ^ y;
    y = x ^ y;
    x = x ^ y;

    System.out.println("After Swap.");
    System.out.println("x = " + x);
    System.out.println("y = " + y);
  }

  public static void main(String[] args) {
    swap(10, 25);
  }
} 

上面的代码将给出以下输出:

Before Swap.
x = 10
y = 25
After Swap.
x = 25
y = 10 

使用上述方法的缺点

  • 如果其中一个变量的值为 0,则基于乘法和除法的方法会失败。
  • 基于加法的方法可能会因算术溢出而失败。 。如果xy太大,对操作数执行的操作可能会导致整数超出范围。