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基礎(chǔ)之多線程方法狀態(tài)和創(chuàng)建方法
Java中可以通過Thread類和Runnable接口來(lái)創(chuàng)建多個(gè)線程,下面這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)之多線程方法狀態(tài)和創(chuàng)建方法的相關(guān)資料,需要的朋友可以參考下2021-09-09
JAVA 多態(tài)操作----父類與子類轉(zhuǎn)換問題實(shí)例分析
這篇文章主要介紹了JAVA 多態(tài)操作----父類與子類轉(zhuǎn)換問題,結(jié)合實(shí)例形式分析了JAVA 多態(tài)操作中父類與子類轉(zhuǎn)換問題相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-05-05
SpringBoot項(xiàng)目從搭建到發(fā)布一條龍
這篇文章主要介紹了SpringBoot項(xiàng)目從搭建到發(fā)布一條龍,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
Java基于Lock的生產(chǎn)者消費(fèi)者模型示例
這篇文章主要介紹了Java基于Lock的生產(chǎn)者消費(fèi)者模型,結(jié)合實(shí)例形式分析了java基于鎖機(jī)制的生產(chǎn)者消費(fèi)者模型相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2018-08-08
Springboot 中使用 Aop代碼實(shí)戰(zhàn)教程
AOP的編程思想是把對(duì)類對(duì)象的橫切問題點(diǎn),從業(yè)務(wù)邏輯中分離出來(lái),從而達(dá)到解耦的目的,增加代碼的復(fù)用性,提高開發(fā)效率,這篇文章主要介紹了Springboot中使用Aop代碼實(shí)戰(zhàn)教程,需要的朋友可以參考下2023-07-07
IDEA 2021配置JavaWeb項(xiàng)目超詳細(xì)教程
本文通過圖文并茂的形式給大家介紹IDEA 2021配置JavaWeb項(xiàng)目的過程,內(nèi)容簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-08-08
JS求多個(gè)數(shù)組的重復(fù)數(shù)據(jù)
這篇文章主要介紹了JS求多個(gè)數(shù)組的重復(fù)數(shù)據(jù)的辦法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09

