Java不借助第三變量實(shí)現(xiàn)兩數(shù)交換的示例
基操
兩數(shù)交換最簡(jiǎn)單最容易理解的就是借助第三變量
public void swapOne(){ int a = 4; int b = 5; int c = a; a = b; b = c; System.out.println("a:"+a); //a:5 System.out.println("b:"+b); //a:4 }
進(jìn)階
利用數(shù)學(xué)計(jì)算
public void swapTwo(){ int a = 4; int b = 5; a=a+b; b=a-b; a=a-b; System.out.println("a:"+a); //a:5 System.out.println("b:"+b); //a:4 }
更進(jìn)階
利用異或運(yùn)算
public void swapThree(){ int a = 4; int b = 5; a = a ^ b; // 0101 ^ 0100 ===> 0001,此時(shí)a的值為1 b = a ^ b; // 0001 ^ 0100 ===> 0101,此時(shí)b的值為5 a = a ^ b; // 0001 ^ 0101 ===> 0100,此時(shí)a的值為4 System.out.println("a:"+a); //a:5 System.out.println("b:"+b); //a:4 }
PS:不借助第三個(gè)變量實(shí)現(xiàn)兩個(gè)變量的交換(數(shù)字或者字符串)
//利用php spl標(biāo)準(zhǔn)類庫(kù)中的棧數(shù)據(jù)結(jié)構(gòu),先進(jìn)后出實(shí)現(xiàn) $a = 'abcde'; $b = 'efghi'; $stack = new SplStack(); $stack->push($a); $stack->push($b); $a = $stack->pop();//efghi $b = $stack->pop();//abcde //利用坐標(biāo)軸上的兩點(diǎn)距離數(shù)學(xué)計(jì)算? $a = 10; $b = 12; $a = $b - $a; $b = $b - $a;//10 $a ?= $b + $a;//12 //利用位運(yùn)算中的^ $a = 10; $b = 12; $a = $a ^ $b; $b = $b ^ $a; //10 $a = $a ^ $b; //12
到此這篇關(guān)于Java不借助第三變量實(shí)現(xiàn)兩數(shù)交換的示例的文章就介紹到這了,更多相關(guān)Java 兩數(shù)交換 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java代理模式與動(dòng)態(tài)代理之間的關(guān)系以及概念
代理模式是開發(fā)中常見的一種設(shè)計(jì)模式,使用代理模式可以很好的對(duì)程序進(jìn)行橫向擴(kuò)展。動(dòng)態(tài)代理:代理類在程序運(yùn)行時(shí)被創(chuàng)建的代理方式。關(guān)鍵在于動(dòng)態(tài),程序具有了動(dòng)態(tài)特性,可以在運(yùn)行期間根據(jù)不同的目標(biāo)對(duì)象生成動(dòng)態(tài)代理對(duì)象2023-02-02Spring Security 實(shí)現(xiàn)“記住我”功能及原理解析
這篇文章主要介紹了Spring Security 實(shí)現(xiàn)“記住我”功能及原理解析,需要的朋友可以參考下2020-05-05Java基本數(shù)據(jù)類型之間的相互轉(zhuǎn)換詳解
這篇文章主要講解Java中基本數(shù)據(jù)類型的轉(zhuǎn)換,數(shù)據(jù)之間相互轉(zhuǎn)換是經(jīng)常會(huì)用到的基礎(chǔ)操作,文中講的很清晰,希望能給大家做一個(gè)參考。2022-05-05Java搭建簡(jiǎn)單Netty開發(fā)環(huán)境入門教程
這篇文章主要介紹了Java搭建簡(jiǎn)單Netty開發(fā)環(huán)境入門教程,有詳細(xì)的代碼展示和maven依賴,能夠幫助你快速上手Netty開發(fā)框架,需要的朋友可以參考下2021-06-06