Trick 1
In the first java program to swap two numbers without a third variable, we swap the values of the two variables in 3 steps which are simple addition and subtractions.
import java.lang.*;
class Swapping
{
public static void main (String[] args) throws java.lang.Exception
{
int a=5,b=10;
a=b+a; //now a =15
b=a-b; //now b= 5
a=a-b; // now a=10 (done)
System.out.println("a = "+a+" b= "+b);
}
}
Trick 2
In the second java program to swap two numbers without a third variable, we swap them in a single statement. The statement contains an assignment, addition and subtraction.
import java.lang.*;
class Swapping
{
public static void main (String[] args) throws java.lang.Exception
{
int a=10,b=30;
a=a+b-(b=a);
//10+30-(10) a becomes 30
// b is assigned with 10 in the same line of code
System.out.println("a= "+a+" b= "+b);
}
}
Trick 3
is used in the program. The binary representation of the numbers, the bitwise xor operation on them and the result are shown in the c program as comments. For simplicity and convenience, we are representing numbers using only 5 bits. The real size of an integer in java is much larger. We show only the rightmost 5 bits. It is enough to illustrate the examples with small integers. The program is as follows:
import java.lang.*;
class Swapping
{
public static void main (String[] args) throws java.lang.Exception
{
int a=8,b=12;
/* a: 8 : 01000
b:12 : 01100
*/
a=a^b;
/* a: 01000 ^
b: 01100
a= 00100 (4)
*/
b=a^b;
/*a: 00100 ^
b: 01100
b= 01000 (8)
*/
a=b^a;
/* b: 01000 ^
a: 00100
a= 01100 (12)
*/
System.out.println("a= "+a+" b= "+b);
}
}
Trick 4
import java.lang.*;
class Swapping
{
public static void main (String[] args) throws java.lang.Exception
{
int a=14,b=4;
/* a: 14 : 1110
b: 4 : 0100
~a: : 0001
~b: : 1011
*/
a=b-~a-1;
/* b: 0100 -
~a: 0001
0011 -
1: 0001
0010
now a= 0010
*/
b=a+~b+1;
/* a: 0010 +
~b: 1011
1: 0001
now b: 1110 (14)
~b: 0001
*/
a=a+~b+1;
/* a: 0010 +
~b: 0001
1: 0001
now a: 0100 (4)
*/
System.out.println("a= "+a+" b= "+b);
}
}





