(基礎三)交換兩個變量值的三種方法

//使用三種方法去交換兩個變量的數值

public class ExchangeTwoVariable {

    public static void main(String[] args) {
        //方法一(簡單):
/*      int a = 1,b = 2;
        int temp;

        System.out.println("交換前:a = " + a +  "   b = " + b);

        temp = a;
        a = b;
        b = temp;

        System.out.println("交換後:a = " + a +  "   b = " + b);*/

        //方法二(簡單):
        /*int a = 3,b = 4;

        System.out.println("交換前:a = " + a +  "   b = " + b);

        a = a + b;
        b = a - b;
        a = a - b;

        System.out.println("交換後:a = " + a +  "   b = " + b);*/

        //方法三:
        //Tips:一個數異或同一個數兩次,結果還是那個數。
        int a = 5,b = 6;

        System.out.println("交換前:a = " + a +  "   b = " + b);

        a = a ^ b;//(1)經過運算,等式左邊的a變成了一箇中間數tmp(或者叫做臨時數),此時b的數值沒有發生變化,還是6。
                       //從第一步開始,a就是“一個數”,b就是“同一個數”。
        b = a ^ b;//(2)因爲一個數異或同一個數兩次,結果還是那個數。此時a就是“一個數”,b就是“同一個數”。
                       //所以此時a^b就得到了原來的a,即5,但是我們的需求是要交換a,b的數值,
                       //所以將得到的運算結果賦值給b,從而達到交換數據的目的,所以此時等式左邊的b等於5。
                        //從第二步開始,b就是“一個數”,a就是“同一個數”。
        a = a ^ b;//(3)在第二步中,等式右邊的b等於6。
                       //因爲一個數異或同一個數兩次,結果還是那個數,此時b就是“一個數”,a就是“同一個數”。
                       //這樣通過兩次異或,我們又可以得到6,從而將其賦值給a。
                       //所以在第三步中等式右邊a^b就得到了原來的b,即6,,但是我們的需求是要交換a,b的數值,
                       //所以將得到的運算結果賦值給a,從而達到交換數據的目的,所以此時等式左邊的a等於6。

        System.out.println("交換後:a = " + a +  "   b = " + b);
    }
}

原創:http://blog.csdn.net/u013383042/article/details/52791607

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章