Last Updated on December 22, 2022 by Prepbytes
In this problem, we need to swap numbers in java. Swapping is the process of changing the values kept in two variables. The values of two variables can be changed in a variety of ways. Simple mathematical operations like addition and subtraction, multiplication and division, or bitwise XOR can also be used to perform the swap process. It can also be switched using a temporary variable.
Say we have to change var2’s value to var1 and vice versa. We have two variables, var1 and var2. The switching of values is the process in question. We are trading the values of two variables, to put it simply. In this post, we’ll examine the many Java methods for switching the values of two variables.
Swap Two Numbers in Java Using Temporary Variable
Let us think of a real-life example. Let’s say you have two boxes: one with a red ball and the other with a black ball. The balls in the two boxes should be exchanged. You want to swap the balls in the two boxes.
How will you do this?
You can use a temporary box as assistance. You can keep the red ball in the box that holds the black ball while keeping the black ball in the temporary box. Later, you can remove the black ball from the temporary container and store it inside the box that originally held the red ball.
How can this solution be turned into a function?
The initial variable’s value will be transferred to a temporary variable that will be created later. The temporary box we used in the "box and ball" example is similar to this. Just as we modified the position of the balls in the box, we will later assign the value of the second variable to the first variable before assigning the value of the temporary variable to the second variable.
Java Program to Swap Two Numbers Using Temporary Variable
class Swap { public static void main(String[] args) { int a = 11, b = 22; System.out.println("Before swapping the numbers:"); System.out.println("First number = " + a); System.out.println("Second number = " + b); int temp = a; a = b; b = temp; System.out.println("After swapping the numbers: "); System.out.println("First number = " + a); System.out.println("Second number = " + b); } }
Output
Before swapping the numbers:
First number = 11
Second number = 22
After swapping the numbers:
First number = 22
Second number = 11
The value of the first number and the second number are switched using a temporary variable, as can be seen in the output.
Swap Two Numbers in Java Without Using a Temporary Variable
Previously, we observed the use of a temporary variable to swap two numbers in Java. Let’s now examine a Java method for swapping two numbers without the use of a temporary variable.
Using Arithmetic Addition and Subtraction We learned how to use a temporary variable to swap two numbers. By utilizing only basic math, we can swap two numbers without the use of a temporary variable. Let’s examine the code so that we may subsequently understand its logic.
Java Program to Swap Two Numbers Without Using a Temporary Variable
class Swap { public static void main(String[] args) { int a = 11, b = 22; System.out.println("Before swapping the numbers: "); System.out.println("First number = " + a); System.out.println("Second number = " + b); a = a + b; b = a - b; a = a - b; System.out.println("After swapping the numbers: "); System.out.println("First number = " + a); System.out.println("Second number = " + b); } }
Output
Before swapping the numbers:
First number = 11
Second number = 22
After swapping the numbers:
First number = 22
Second number = 11
Explanation: After viewing the code and the result, let’s examine what transpired in the code to cause the switching of two values. The 10, 11, and 12th lines had their numbers switched.
- In the line 11, a = a + b, a is assigned the value of a + b, i.e., the sum of given numbers. In this case, a = 10 + 20, i.e., a = 30.
- In the next step, i.e., b = a – b, we take the difference between the sum (of a and b) and b. Since b is subtracted from the sum of a and b, we got the value of a. Hence, using b = a – b, the original value of a is assigned to b. In this case, we get b = 30 – 20, i.e., b = 10.
- Till now, we have assigned the value of a in b but we are yet to assign the value of b in a. This is also simple to do.
- If we subtract the original value of a from the sum, then we will end up with the value of b.
- So, with a = a – b, the original value of a (currently stored in b) is subtracted from the sum (currently stored in a). Hence, now a contains the original value of b. So, in the last step, i.e., a = a – b, we get a = 30 – 10, i.e., a = 20.
As you can see, we just swapped the two numbers without using a temporary variable.
Note: This method could fail due to arithmetic overflow if the values of a and b are too large since addition might go outside of the integer range.
Swapping Two Number Using Arithmetic Multiplication and Division
class Swap { public static void main(String[] args) { int a = 11, b = 22; System.out.println("Before swapping the numbers: "); System.out.println("First number = " + a); System.out.println("Second number = " + b); a = a * b; b = a / b; a = a / b; System.out.println("After swapping the numbers: "); System.out.println("First number = " + a); System.out.println("Second number = " + b); } }
Output
Before swapping the numbers:
First number = 11
Second number = 22
After swapping the numbers:
First number = 22
Second number = 11
Explanation: This approach also uses multiplication and division to swap two values that are simple to understand from the given code, just like the prior way did.
Note: However, if any one of the integers is 0, this strategy will fail since the product becomes 0 regardless of the other number.
Swapping Two Number Using Bitwise XOR operator
When two numbers a and b are XOR, the result is a number with all bits set to 1 wherever a and b’s bits vary.
Example: In binary, 4 is denoted by 100 and 5, by 101. 5 and 4 can be XORed to produce 001, or 1.
Decimal | Binary | |
---|---|---|
Number | 5 | 101 |
Number | 4 | 100 |
Bitwise XOR | 1 | 001 |
Java Program to Swap Two Number Using Bitwise XOR operator
class Swap { public static void main(String[] args) { int a = 11, b = 22; System.out.println("Before swapping the numbers:"); System.out.println("First number = " + a); System.out.println("Second number = " + b); a = a ^ b; b = a ^ b; a = a ^ b; System.out.println("After swapping the numbers: "); System.out.println("First number = " + a); System.out.println("Second number = " + b); } }
Output
Before swapping the numbers:
First number = 11
Second number = 22
After swapping the numbers:
First number = 22
Second number = 11
Explanation: In this method, we made use of the bitwise XOR operator. Bitwise XOR has two interesting properties:
x ^ x = 0
x ^ 0 = x
^ operator is used to denote xor operation.
So, in line 10, a = a ^ b, the value of a is changed to a ^ b.
In line 11, b = a ^ b. So, b becomes
b = a ^ b = (a ^ b) ^ b = a ^ {b ^ b} = a ^ 0 = a
Thus, the value of a is now stored in b.
And, in line 13, a = a ^ b. So, a becomes
a = a ^ b = (a ^ b) ^ a = (a ^ a) ^ b = 0 ^ b = b
Thus, the value of b is now stored in a as well.
In this way, we successfully swapped the numbers a and b using the bitwise XOR operator.
Note: The above method to swap two numbers works fine with non-zero numbers. But this approach won’t work if any one of the numbers is 0 because the XOR will be equal to the non-zero number and the same will be assigned to both the numbers.
You would now have a thorough understanding of all the many ways to swap two integers in Java after running the above program. I hope you find my site to be useful and helpful.
Other Java Programs
Java Program to Add Two Numbers
Java Program to Check Prime Number
Java Program to Check Whether a Number is a Palindrome or Not
Java Program to Find the Factorial of a Number
Java Program to Reverse a Number
Java Program to search an element in a Linked List
Program to convert ArrayList to LinkedList in Java
Java Program to Reverse a linked list
Java Program to search an element in a Linked List
Anagram Program in Java
Inheritance Program in Java
Even Odd Program in Java
Hello World Program in Java
If else Program in Java
Binary Search Program in Java
Linear Search Program in Java
Menu Driven Program in Java
Package Program in Java
Leap Year Program in Java
Array Programs in Java
Linked List Program in Java
String Programs in Java
Star Program in Java
Number Pattern Program in Java