用第三個(gè)變量來存儲。
成都創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、太倉網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為太倉等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
就是再申請一個(gè)變量。
int
num1=10;
int
num2=8;
int
temp=0
temp=num1;//將num1的值賦給中間變量temp
num1=num2;//將num2的值賦給num1;
num2=temp;//將temp的值賦給num2,num1和num2的值就互換了。
這個(gè)方法是最通用的,記住這個(gè)就行了。
如果可以使用第三個(gè)變量來進(jìn)行互換變量,可以進(jìn)行如下操作:
int a= 5 , b = 6;
int temp ;
temp = a ;
a = b;
b = temp;
這樣就可以了。
也可以不使用第三變量:如下:
int a= 5 , b = 6;
a = a + b;
b = a - b;
a = a - b;
這樣也是可以的。
利用異或(a^b)^b 等于a,進(jìn)行交互,不需要設(shè)置臨時(shí)變量也不會超范圍。代碼如下:
import java.util.Scanner;
public class woo {
public static void main(String args[]) {
Scanner scan =new Scanner(System.in);
System.out.println("輸入兩個(gè)數(shù)a, b");
int a = scan.nextByte();
int b = scan.nextByte();
System.out.printf("交換前:a = %d, b = %d\n", a, b);
a = a^b;
b = a^b;
a = a^b;
System.out.printf("交換后:a = %d, b = %d", a, b);
}
}
擴(kuò)展資料:
值傳遞就是在方法調(diào)用的時(shí)候,實(shí)參是將自己的一份拷貝賦給形參,在方法內(nèi),對該參數(shù)值的修改不影響原來實(shí)參。
引用傳遞是在方法調(diào)用的時(shí)候,實(shí)參將自己的地址傳遞給形參,此時(shí)方法內(nèi)對該參數(shù)值的改變,就是對該實(shí)參的實(shí)際操作。
在java中只有一種傳遞方式,那就是值傳遞.可能比較讓人迷惑的就是java中的對象傳遞時(shí),對形參的改變依然會意向到該對象的內(nèi)容。
參考資料:
百度百科——參數(shù)傳遞
可以利用以下方式:通過異或?qū)崿F(xiàn)(異或符號為^)關(guān)于^:異或的運(yùn)算法則,相當(dāng)于不帶進(jìn)位的二進(jìn)制加法。二進(jìn)制下用1表示真,0表示假,則異或的運(yùn)算法則為:0異或0=0,1異或0=1,0異或1=1,1異或1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進(jìn)位。第一個(gè)數(shù) 符號 第二個(gè)數(shù) 結(jié)果0 ^ 0 00 ^ 1 11 ^ 0 11 ^ 1 0如:num1 = 5,對應(yīng)的二進(jìn)制為(101); num2 = 7,對應(yīng)的二進(jìn)制為(111);num1=num1^num2=2; 即二的平方位1^1=0,二的一次方位0^1=1,二的0次方位1^1=0;得到(010)即為2。num2 = num1 ^ num2=5 ;相當(dāng)于num2=num1^num2^num2;二的平方位1^1^1=1(此處無論num2的二的平方位是0還是1,異或運(yùn)算后都為0,故得到的肯定與原num1的二的平方位相同,同理其他位置全部也都是原num1的數(shù));二的一次方位0^1^1=0;二的0次方位1^1^1=1.;得到(101)即為5.num1 = num1^num2=7; 相當(dāng)于num1 = num1^num2^num1^num2^num2=num2=7.此方法同樣實(shí)現(xiàn)了兩個(gè)數(shù)互換。
String str1="我是變量1";
String str2="我要和str1換位置";
String str3="";
將str1與str2互換
str3=str1;//先把str1給str3
str1=str2;//把str2的給str1
str2=str3;//str3其實(shí)是str1的值,這樣str1的值就給了str2
^ 在java中是位運(yùn)算符,異或運(yùn)算。你圈的那三行核心代碼就是通過異或運(yùn)算來交換變量A、B的值。
關(guān)于異或運(yùn)算:異或運(yùn)算
public?class?Test?{
public?static?void?main(String[]?args)?{
int?A?=?14;
int?B?=?5;
A?=?A?^?B;
B?=?B?^?A;
A?=?A?^?B;
System.out.println("A?=?"?+?A);??//?A?=?5
System.out.println("B?=?"?+?B);??//?B?=?14
}
}
執(zhí)行結(jié)果
就現(xiàn)在的實(shí)際開發(fā)來說這種寫法適合裝逼。
在現(xiàn)在的實(shí)際開發(fā)中通常是下面這樣寫的,簡單易懂
int?temp?=?A;??//?引入一個(gè)中間變量
A?=?B;
B?=?temp;