程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java 兩個變量交換值,java兩個變量交換

Java 兩個變量交換值,java兩個變量交換

編輯:JAVA綜合教程

Java 兩個變量交換值,java兩個變量交換


  上課時候正好講到交換變量,學生說我借助第三方變量來交換好low,哈哈。好吧...

  我來總結下我知道的,java的一些交換變量的方式。來人啊,代碼伺候:

package test;

public class Test {
    public static void main(String[] args) {
        int a, b;
        a = 10;
        b = 12;
        System.out.println(a + "  " + b);

        /*
         * 借助第三方變量 這種算法易於理解,特別適合幫助初學者了解計算機程序的特點,是賦值語句的經典應用。
         * 在實際軟件開發當中,此算法簡單明了,不會產生歧義,便於程序員之間的交流。 一般情況下碰到交換變量值的問題,都應采用此算法(標准算法)。
         */
        int temp = a;
        a = b;
        b = temp;
        System.out.println(a + "  " + b);

        /*
         * 算術算法 它的原理是:把a、b看做數軸上的點,圍繞兩點間的距離來進行計算。 具體過程:
         * 第一句“a=b-a”求出ab兩點的距離,並且將其保存在a中;
         * 第二句“b=b-a”求出a到原點的距離(b到原點的距離與ab兩點距離之差),並且將其保存在b中;
         * 第三句“a=b+a”求出b到原點的距離(a到原點距離與ab兩點距離之和),並且將其保存在a中。完成交換。
         * 此算法與標准算法相比,多了三個計算的過程,但是沒有借助臨時變量。(算術算法)
         */
        a = b - a;
        b = b - a;
        a = b + a;
        System.out.println(a + "  " + b);

        /*
         * 異或 相同為1 不同為0 此算法能夠實現是由異或運算的特點決定的,通過異或運算能夠使數據中的某些位翻轉,其他位不變。
         * 這就意味著任意一個數與任意一個給定的值連續異或兩次,值不變。
         * 即:a^b^b=a。將a=a^b代入b=a^b則得b=a^b^b=a;同理可以得到a=b^a^a=b;輕松完成交換。
         */
        a = a ^ b;// 1010 ^ 1100 1001
        b = a ^ b;// 1001 ^ 1100 1010
        a = a ^ b;// 1001 ^ 1010 1100
        System.out.println(a + "  " + b);
    }
}

個人覺得異或好玩點。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved