以下方法的根本原理就是:
借助第三個變量
c = a;
a = b;
b = c;
運算符-不借助第三變量:
a = a+b;
b = a-b;
a = a-b;
為運算符-不借助第三個變量:
(此種方法運用這種原理:一個數對另一個數位異或兩次,該數不變)
a = a^b;
b = a^b;
a = a^b;
/** * Swap * 互換兩個變量的值的方法 * @author bc * @since 2018年3月27日 */ public class Swap { public static void main(String[] args) { int a = 3, b = 5; System.out.println("===臨時變量==="); temp(a, b); System.out.println("===算數運算==="); arithmetic(a, b); System.out.println("===位運算===="); bit(a, b); } // 借助第三個變量,使a,b變量的值交換 public static void temp(int a, int b) { System.out.println("a=" + a + ";b=" + b); int c = a; a = b; b = c; System.out.println("a=" + a + ";b=" + b); } // 算數運算--(不借助第三個變量) public static void arithmetic(int a, int b) { System.out.println("a=" + a + ";b=" + b); a = a + b;//8 b = a - b;//3 a = a - b;//5 System.out.println("a=" + a + ";b=" + b); } // 位運算--(不借助第三個變量) public static void bit(int a, int b) { System.out.println("a=" + a + ";b=" + b); //按位異或的運算規則--異:1 /** * a :0011 * b :0101 * a^b :0110 */ a = a ^ b; //0110 /** * a :0110 * b :0101 * a^b :0011 */ b = a ^ b; //0011 /** * a :0110 * b :0011 * a^b :0101 */ a = a ^ b; //0101 System.out.println("a=" + a + ";b=" + b); } }