Java中交換兩個整數變量的值

本文發表在本人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中交換兩個整數變量的值 閱讀原文。

相關文章
相關標籤/搜索