public class Demo {
成都創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設(shè)服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為潮安企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、網(wǎng)站制作,潮安網(wǎng)站改版等技術(shù)服務。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
public static void main(String[] args) {
//調(diào)用這個靜態(tài)方法傳遞兩個int 型的值就是了。
exchange(2, 6);
}
public static void exchange(int a, int b) {
int temp = 0;
temp = a;
a = b;
b = temp;
System.out.println("a=" + a);
System.out.println("b=" + b);
}
}
1、對于原始數(shù)據(jù)類型,也就是int、 long、char之類的類型,是傳值的,如果你在方法中修改了值,方法調(diào)用結(jié)束后,那個變量的值沒用改變。
2、對于對象類型,也就是Object的子類,如果你在方法中修改了它的成員的值,那個修改是生效的,方法調(diào)用結(jié)束后,它的成員是新的值,但是如果你把它指向一個其它的對象,方法調(diào)用結(jié)束后,原來對它的引用并沒用指向新的對象。
因此在change方法中交換x,y是成功的,但是不會影響到static x ,y的值,在change方法中輸出是可以得到交換成功的x,y,因為它們都是基本類型??梢酝ㄟ^一個int[]的返回值來得到交換后的數(shù)值。
簡單點說
1、基本類型作為參數(shù)傳遞時,是傳遞值的拷貝,無論你怎么改變這個拷貝,原值是不會改變的
2、在Java中對象作為參數(shù)傳遞時,是把對象在內(nèi)存中的地址拷貝了一份傳給了參數(shù)。
用第三個變量來存儲。
就是再申請一個變量。
int
num1=10;
int
num2=8;
int
temp=0
temp=num1;//將num1的值賦給中間變量temp
num1=num2;//將num2的值賦給num1;
num2=temp;//將temp的值賦給num2,num1和num2的值就互換了。
這個方法是最通用的,記住這個就行了。
JAVA對兩個整數(shù)變量的值進行互換(不需要第三方變量)的程序如下:
方法一(加減法):
a?=?a?+?b;
b?=?a?-?b;
a?=?a?-?b;
方法二(異或運算):
a?=?a?^?b;
b?=?a?^?b;
a?=?a?^?b;
代碼實現(xiàn)如下:
public?class?Demo?{
public?static?void?main(String?[]?args){
int?m=2,n=3;
//method_1(m,?n);
method_2(m,?n);?????
}
/**
*?使用異或^
*明白一個數(shù),如果異或同一個數(shù)兩次,那么就等于本身
*/
private?static?void?method_3(int?m,?int?n)?{
m=m^n;
n=m^n;
m=m^n;
System.out.println("m="+m+"\tn="+n);
}
/**
*?使用自身的數(shù)組,加減運算
*/
private?static?void?method_2(int?m,?int?n)?{
m=m+n;
n=m-n;
m=m-n;
System.out.println("m="+m+"\tn="+n);
}
}
基本類型無法按引用傳遞,詳見『ヤ;擱[淺灬メ』的解釋,我只提供一種實現(xiàn)方案,一定要用函數(shù)調(diào)用來實現(xiàn)的話,可以傳個數(shù)組過去
import java.io.*;
public class Compare
{
public static void change(int[] a) throws Exception
{
int temp=0;
temp=a[0];a[0]=a[1];a[1]=temp;
}
public static void main(String args[]) throws Exception
{
int[] a = new int[2];
System.out.println("輸入a:");
InputStreamReader inreader=new InputStreamReader(System.in);
BufferedReader breader=new BufferedReader(inreader);
a[0]=Integer.parseInt(breader.readLine());
System.out.println("輸入b:");
a[1]=Integer.parseInt(breader.readLine());
System.out.println("交換前a="+a[0]+" 交換前b="+a[1]);
change(a);
System.out.println("交換后a="+a[0]+" 交換后b="+a[1]);
}
}
利用異或(a^b)^b 等于a,進行交互,不需要設(shè)置臨時變量也不會超范圍。代碼如下:
import java.util.Scanner;
public class woo {
public static void main(String args[]) {
Scanner scan =new Scanner(System.in);
System.out.println("輸入兩個數(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);
}
}
擴展資料:
值傳遞就是在方法調(diào)用的時候,實參是將自己的一份拷貝賦給形參,在方法內(nèi),對該參數(shù)值的修改不影響原來實參。
引用傳遞是在方法調(diào)用的時候,實參將自己的地址傳遞給形參,此時方法內(nèi)對該參數(shù)值的改變,就是對該實參的實際操作。
在java中只有一種傳遞方式,那就是值傳遞.可能比較讓人迷惑的就是java中的對象傳遞時,對形參的改變依然會意向到該對象的內(nèi)容。
參考資料:
百度百科——參數(shù)傳遞
分享題目:Java代碼實現(xiàn)值交換,java交換數(shù)值
路徑分享:http://www.sd-ha.com/article18/dssppdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站設(shè)計公司、搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作、定制網(wǎng)站、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)