不申請第三個變量交換兩個int long char型值

        看到有一些筆試題是問如何不申請第三個變量交換兩個變量的值,例如 int a = 1; int b=2; 用三行代碼實現兩個數值的交換。我研究了加減法和異或的方法,認爲兩種方法在思路上是等價的,也調研過一些網友寫的文章,還是申請tmp變量的方法應用性強,這種題目不過是考考智商。本文主要討論異或的方法。

異或的方法可以用於int型和long型的變量,加減法的話也是相同的,一搜一大堆,就不贅述了,值得一提的是,我思考是不是char型或者String型變量也可以用異或的方法交換,經調研發現,只有按位計算的情況下纔可以,於是想到ascII碼,認爲char型變量也是可以通過異或三行代碼進行交換。

以下是java代碼:

import java.lang.System;


public class exchange
{
	public static void main(String[] args)
	{
		char a = 'a';
		char b = 'b'; 	
		a = (char)(((int)a)^((int)b));
		b = (char)(((int)a)^((int)b));
		a = (char)(((int)a)^((int)b));
		System.out.println("a= " +a +" b= "+b);
	}
}

運行結果:


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