</>

Technology

Java Programs

Difficulty

Beginner

Interview Question

Write a Java program to swap two numbers without using a third variable.

Answer

Swap Two Numbers Without Third Variable

Method 1: Using Arithmetic (+/-)

Java
public class SwapWithoutTemp {
    public static void main(String[] args) {
        int a = 10, b = 20;

        System.out.println("Before: a=" + a + ", b=" + b);

        a = a + b;  // a = 30
        b = a - b;  // b = 30 - 20 = 10
        a = a - b;  // a = 30 - 10 = 20

        System.out.println("After:  a=" + a + ", b=" + b);
    }
}

Output

CODE
Before: a=10, b=20
After:  a=20, b=10

Method 2: Using XOR Bitwise (No Overflow Risk)

Java
int a = 10, b = 20;

a = a ^ b;   // a = 10 XOR 20 = 30 (binary: 01010 XOR 10100 = 11110)
b = a ^ b;   // b = 30 XOR 20 = 10
a = a ^ b;   // a = 30 XOR 10 = 20

System.out.println("a=" + a + ", b=" + b);  // a=20, b=10

Method 3: Using Multiplication/Division

Java
int a = 10, b = 20;
a = a * b;   // a = 200
b = a / b;   // b = 10
a = a / b;   // a = 20
// ⚠️ Fails if either value is 0

Method 4: With Temp Variable (Standard, Clearest)

Java
int a = 10, b = 20, temp;
temp = a;
a    = b;
b    = temp;
System.out.println("a=" + a + ", b=" + b);  // a=20, b=10

Why Arithmetic Can Overflow

Java
int a = Integer.MAX_VALUE;  // 2147483647
int b = 1;
a = a + b;  // OVERFLOW! wraps to negative
// Use XOR method for safety with large numbers

Follow AutomateQA