本文發表在本人GItHub主頁,請移步Java中交換兩個整數變量的值 閱讀原文。html
以下,咱們定義了兩個整數變量,而且分別進行了賦值,下面,咱們須要實現的就是將x的值賦值給y,將y值賦值給x,實現x和y的值交換:面試
int x = 100;
int y = 200;
int x = 100;
int y = 200;
int temp = x; //定義一個臨時遍歷保存x的值
x = y; //將y值賦值給x
y = temp; //再將臨時變量保存的x的值賦值給y
上面這種方式很容易看懂,也是實際開發當中常常這麼作的,也建議開發中就這麼幹。spa
int x = 100;
int y = 200;
x = x ^ y ;
y = x ^ y ;
x = x ^ y ;
學過異或咱們知道:code
一個數被另外一個數異或兩次,該數保持不變
下面咱們分析下上面的代碼發生了什麼:htm
int x = 100;
int y = 200;
x = x ^ y ; //x的值發生了改變,成爲了x ^ y
y = x ^ y ;//這裏的x是新的值,頁就送x ^ y ,那麼這句其實就是 y = x ^ y ^ y,也就是y=x,這裏x是最初的x值
x = x ^ y ;//這裏的x等於x^y,這裏的y已經成爲最初的x,也就是 x = x ^ y ^ x,也就是x=y
至此完成了x和y的值的交換,這種操做方式可能會出如今面試題中。開發
int x = 100;
int y = 200;
x = x + y ;
y = x - y ;
x = x - y ;
經過上面的代碼,咱們也完成了x和y的交換,那麼這裏又發生了什麼呢?get
int x = 100;
int y = 200;
x = x + y ; //這裏x成爲最初的x與y的和
y = x - y ; //y = x + y - y,這裏將最初的x賦值給了y
x = x - y ; //右邊的x=x+y,y=x,也就是x = x + y -x ,也就是x的值成爲了最初的y的值。
經過簡單的+、-操做也實現了x和y值的交換。class
int x = 100;
int y = 200;
y = (x + y) - (x = y);
雖然 y = (x + y) - (x = y)這一個式子完成了x和y的值交換,其實包含了多個步驟:import
先運算右邊的x+y基礎
將y值賦給了x
x+y-y賦給了y
至此實現了x和y值的交換。
在實際開發中爲了可讀性,仍是強烈建議使用第一種方式,後面幾種看成興趣瞭解下便可,加深對Java基礎的理解,若是你還有其餘到方式實現,歡迎留言探討~
本文發表在本人GItHub主頁,請移步Java中交換兩個整數變量的值 閱讀原文。