面試題:如何在不使用臨時變量temp的情況下交換兩個整數的值?


利用一個小技巧,一個整數a在異或另一個整數b兩次以后所得的值還是整數a。

具體的過程我們可以自己找兩個整數以二進制的形式自己在紙上畫一下他們的異或過程。(異或的運算符號為"^")

比如:

 

下面給出交換兩個整數位置的代碼,不需要臨時變量temp。

public class Aa {
	public static void main(String[] args) {
		int a = 3, b = 5;
		System.out.println("before swap:" + "a=" + a + ",b=" + b);
		// 開始交換位置
		a = a ^ b;  
		b = a ^ b; // b=a^b^b=a
		a = a ^ b; // a=a^b^a^b^b=b
		System.out.println("after swap:" + "a=" + a + ",b=" + b);
	}
}

運行結果:

before swap:a=3,b=5
after swap:a=5,b=3

 


免責聲明!

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



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