JAVA交換兩個變量的值-(不使用第三變量)


以下方法的根本原理就是: 

借助第三個變量

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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM