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
