Swap two numbers without using third or temporary variable in java

Swap two numbers without using temporary variable:

  • Method 1: Swap numbers using XOR method.

  • Method 2: Swap numbers using addition & subtraction.

  • Method 3:Swap numbers using multiplication & division.

 Swap two numbers – XOR method

Suppose, we would like swap two variables x = 4 & y = 7 using XOR method.
Truth table of “Exclusive-OR” or XOR gate is :

X Y  Output
0 0  0
0 1 1
0  1
1 0

  • We will swap variables using XOR (x = 4 & y = 7)
    1. Initially x = 4 & y = 7
    2. x = x ^ y  = 3
      • i.e.  x = 4 ^ 7 = 0100 ^ 0111 = 0011 = 3
    3. x = 3 & y = 7
    4. y = x ^ y = 4
      • i.e. y = 3 ^ 7 = 0011 ^ 0111 = 0100 = 4
    5. x = 3 & y = 4
    6. x = x ^ y = 7
      • i.e. x = 3 ^ 4 = 0011 ^ 0100 = 0111 = 7
    7. x = 7 & y = 4

Swap two numbers – addition & subtraction method in java

  1. Swap two variables (x = 4 & y = 7) using addition & subtraction.
  2. Initially x = 4 & y = 7
  3. x = x + y = 11
    • x  = 4 + 7 = 11.
  4. x = 11, y  = 7
  5. y = x – y = 4
    • y = 11 – 7 = 4
  6. x = 11, y = 4
  7. x = x – y = 7
    • x = 11 – 4 = 7.
  8. After swap x = 7 & y = 4

 Swap two numbers using multiplication & division in java

  1. Swap two variables (x = 4 & y = 7) using multiplication & division
  2. Initially x = 4 & y = 7
  3. x = x *  y = 28
    • x  = 4 * 7 = 28.
  4. x = 28, y  = 7
  5. y = x / y = 4
    • y = 28 / 7 = 4
  6. x = 28, y = 4
  7. x = x / y = 7
    • x = 28 / 4 = 7.
  8. After swap x = 7 & y = 4

Code: Swap two numbers without temporary variable (java)

package org.learn;

import java.util.Scanner;

public class DemoSwap {

 public static void main(String[] args) {

  try (Scanner scanner = new Scanner(System.in)) {
   System.out.printf("1. Enter first number x : ");
   int x = scanner.nextInt();
   System.out.printf("2. Enter second number y : ");
   int y = scanner.nextInt();

   swapUsingXOR(x, y);
   swapUsingAdditionAndSubstraction(x, y);
   swapUsingMultiplicationAndDivision(x, y);
  }
 }
 
 private static void swapUsingXOR(int x, int y) {
  // swapping number using XOR
  // x = 4 & y = 7
  // x ^ y = 0100 ^ 0111 = 0011 = 3
  // x becomes 3
  x = x ^ y;

  // x ^ y = 0011 ^ 0111 = 0100 = 4
  // y become 4
  y = x ^ y;

  // x ^ y = 0011 ^ 0100 = 0111 = 7
  // x becomes 7
  x = x ^ y;

  System.out.printf("3. Swap numbers by XOR : x = %d, y = %d ",x,y);
 }
 
 private static void swapUsingAdditionAndSubstraction(int x, int y) {
  // x = 4 & y = 7
  // x = 4 + 7 = 11
  // x becomes 11
  x = x + y;

  // x = 11 & y = 7
  // y = 11 - 7 = 4
  // y becomes 4
  y = x - y;

  // x = 11 & y = 4
  // x = 11 - 4 = 7
  // x becomes 7
  x = x - y;

  System.out.printf("\n4. Swap using Addition & subtraction: x = %d, y = %d ",x,y);
 }

 private static void swapUsingMultiplicationAndDivision(int x, int y) {
  // x = 4 & y = 7
  // x = 4 * 7 = 28
  // x becomes 11
  x = x * y;

  // x = 28 & y = 7
  // y = 28 / 7 = 4
  // y becomes 4
  y = x / y;

  // x = 28 & y = 4
  // x = 28 / 4 = 7
  // x becomes 7
  x = x / y;

  System.out.printf("\n5. Swap using multiplication & division: x = %d, y = %d ",x,y);
 } 
}

Output: swap two variables without third variable in java

1. Enter first number x : 4
2. Enter second number y : 7
3. Swap numbers by XOR : x = 7, y = 4 
4. Swap using Addition & subtraction: x = 7, y = 4 
5. Swap using multiplication & division: x = 7, y = 4 
Scroll to Top