最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java不使用第三變量交換兩個變量的值

 更新時間:2024年04月25日 09:16:02   作者:天航星  
這篇文章主要介紹了java不使用第三變量交換兩個變量的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

不使用第三變量交換兩個變量的值

在 Java 中,經(jīng)常會需要交換兩個變量的值,我們一般是使用第三變量完成

比如:

temp = a;
a = b;
b = temp;

這樣的寫法確實能達成目標,但因此而引入了第三變量,對資源的消耗增加了。

這里總結(jié)了兩種不使用第三變量實現(xiàn)的方式

這兩種方法僅為個人總結(jié),不能斷定只有這三種,非常希望大家能提出其他的方式,互相學(xué)習(xí)。

加減交換法

a = a + b;
b = a - b;
a = a - b;a = a + b;
b = a - b;
a = a - b;

這種方式還有更高級的寫法:

a = a + b - (b = a);

這種寫法確實達到了目標,但還只是數(shù)字層面的技巧,下面介紹一種計算機底層的方式。

異或運算法

異或運算平時用得較少,這里先介紹一下。

兩個數(shù)進行異或運算,其實就是它們的二進制數(shù)每一位進行運算:相同為 0,不同為 1

0 ^ 0 = 0;1 ^ 0 = 1;0 ^ 1 = 1;1 ^ 1 = 0;

由此可以得出異或的 3 個特點:

  • 0 異或任何數(shù) = 任何數(shù)
  • 1異或任何數(shù) = 任何數(shù)取反
  • 任何數(shù)異或自己 = 把自己置0

異或的常見用途:

  • 使某些特定的位翻轉(zhuǎn)

例如對數(shù) 10100001 的第 2 位和第 3 位翻轉(zhuǎn),則可以將該數(shù)與 00000110 進行異或運算:

10100001 ^ 00000110 = 10100111
  • 兩個變量值的交換,而不必使用第三變量

這就是我們這里的需求了。

例如交換兩個整數(shù) a = 10100001,b = 00000110 的值, 可以這樣實現(xiàn):

a = a ^ b; // a = 10100111
b = b ^ a; // b = 10100001
a = a ^ b; // a = 00000110

以上過程等效于:

a = a ^ b;
b = b ^ a = b ^ ( a ^ b ) = a ^ b ^ b = a ^ 0 = a;
a = a ^ b = (a ^ b) ^ a = b ^ a ^ a = b ^ 0 = b;

這樣就實現(xiàn)了兩個變量值的交換。

更推薦這種方式,倒不因為這樣寫更高級,而是這樣的二進制運算是最快的,執(zhí)行效率最高。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實現(xiàn)經(jīng)典拳皇誤闖冒險島游戲的示例代碼

    Java實現(xiàn)經(jīng)典拳皇誤闖冒險島游戲的示例代碼

    《拳皇誤闖冒險島》是拳皇和冒險島素材的基于JavaSwing的動作類游戲。本文將用Java語言實現(xiàn)這一游戲,需要的小伙伴可以參考一下
    2022-02-02
  • 關(guān)于Java變量的聲明、內(nèi)存分配及初始化詳解

    關(guān)于Java變量的聲明、內(nèi)存分配及初始化詳解

    下面小編就為大家?guī)硪黄P(guān)于Java變量的聲明、內(nèi)存分配及初始化詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 關(guān)于@Component注解的含義說明

    關(guān)于@Component注解的含義說明

    這篇文章主要介紹了關(guān)于@Component注解的含義說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot 過濾器 Filter使用實例詳解

    SpringBoot 過濾器 Filter使用實例詳解

    這篇文章主要為大家介紹了SpringBoot 過濾器Filter使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 利用Jasypt如何對Spring Boot配置文件加密

    利用Jasypt如何對Spring Boot配置文件加密

    這篇文章主要給大家介紹了關(guān)于利用Jasypt如何對Spring Boot配置文件加密的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Spring Boot 對接深度求索接口實現(xiàn)知識問答功能

    Spring Boot 對接深度求索接口實現(xiàn)知識問答功能

    本文詳細介紹了如何使用 Spring Boot 對接深度求索接口,實現(xiàn)知識問答功能,通過整合深度求索 API,我們可以輕松地在 Spring Boot 項目中實現(xiàn)智能問答功能,
    2025-02-02
  • 解決@Validated對List對象驗證失效問題

    解決@Validated對List對象驗證失效問題

    文章指出@Validated注解無法驗證List數(shù)組參數(shù),建議手動逐項驗證或封裝List為對象進行驗證,前者代碼冗余但直接,后者需調(diào)整JSON結(jié)構(gòu)但更簡潔,根據(jù)需求選擇方案,權(quán)衡靈活性與參數(shù)改造成本
    2025-09-09
  • Java開發(fā)中常用記錄

    Java開發(fā)中常用記錄

    這篇文章主要介紹了Java-編程式事務(wù)、Java-Stream、Linux常用命令,需要的朋友可以參考下
    2023-05-05
  • Tomcat 實現(xiàn)WebSocket詳細介紹

    Tomcat 實現(xiàn)WebSocket詳細介紹

    這篇文章主要介紹了Tomcat 如何實現(xiàn)WebSocket的相關(guān)資料,對WebSocket協(xié)議通信的過程進行了詳細介紹,需要的朋友可以參考下
    2016-12-12
  • Java 中HttpURLConnection附件上傳的實例詳解

    Java 中HttpURLConnection附件上傳的實例詳解

    這篇文章主要介紹了Java 中HttpURLConnection附件上傳的實例詳解的相關(guān)資料,希望通過本文大家能掌握這樣的知識內(nèi)容,需要的朋友可以參考下
    2017-09-09

最新評論

家居| 崇文区| 尉犁县| 全南县| 丰原市| 穆棱市| 马尔康县| 兴国县| 和平县| 澳门| 郓城县| 白水县| 沙田区| 隆安县| 罗城| 正镶白旗| 墨脱县| 甘洛县| 长宁县| 花垣县| 株洲市| 胶南市| 桓仁| 比如县| 泸西县| 巴青县| 兴城市| 高阳县| 麟游县| 晋宁县| 从化市| 平罗县| 理塘县| 公安县| 清水河县| 西乌| 东阳市| 吉木乃县| 巫山县| 龙游县| 昭平县|