Java Examples

Java - Swap two numbers without using Temporary Variable



The value of two variables can be swapped without using any temporary variables. The method involves using operators like +, *, / and bitwise.

Method 1: Using + operator

In the example below, the + operator is used to swap the value of two variables x and y.

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);

    //Swap technique
    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);
  }
}

The above code will give the following output:

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

Method 2: Using * operator

Like + operator, the * operator can also be used to swap the value of two variables x and y.

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);

    //Swap technique
    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);
  }
}

The above code will give the following output:

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

Method 3: Using / operator

Similarly / operator can also be used to swap the value of two variables x and y.

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);

    //Swap technique
    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);
  }
}

The above code will give the following output:

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

Method 4: Using bitwise operator

The bitwise XOR (^) operator can also be used to swap the value of two variables x and y. It returns 1 when one of two bits at same position in both operands is 1, otherwise returns 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);

    //Swap technique
    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);
  }
}

The above code will give the following output:

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

Disadvantages of using above methods

  • The multiplication and division based approaches fail if the value of one of the variable is 0.
  • The addition based approach may fail due to arithmetic overflow. If x and y are too large, operation performed on operands may result into out of range integer.