日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java方法的传递方式_JAVA基础--方法传参

發(fā)布時(shí)間:2025/3/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java方法的传递方式_JAVA基础--方法传参 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JAVA基礎(chǔ)--方法傳參

為啥拿這個(gè)當(dāng)話題?

在初學(xué)者階段,許多童鞋都對(duì)方法傳參比較迷茫,知其然不知其所以然。

一.先說(shuō)說(shuō)參數(shù)傳遞的幾個(gè)術(shù)語(yǔ):

值調(diào)用(call by vale):表示方法接收的是調(diào)用者傳遞的值。

引用調(diào)用(call by reference):表示方法接收的是調(diào)用者傳遞的變量地址。

一個(gè)方法可以修改傳遞引用所對(duì)應(yīng)的變量值,而不能修改傳遞值調(diào)用所對(duì)應(yīng)的變量值;

**JAVA語(yǔ)言總是采用值調(diào)用。也就是說(shuō),JAVA方法得到的是所有參數(shù)值的一個(gè)拷貝,方法不能修改傳遞給他的任何參數(shù)變量的內(nèi)容。

例如:

int?age=100;

person.setAge(age);

在以上方法調(diào)用后,age 的值還是100;

下面再看一例子,假如某方法將一個(gè)變更值修改為原來(lái)的值的3倍:

public void addValue(int x){

x = 3 * x;

}

然后調(diào)用這個(gè)方法:

int percent = 10;

addValue(percnet);

無(wú)論如何調(diào)用,percent的值還是10,下面是執(zhí)行過(guò)程:

1.x被初始化為percent值的一個(gè)拷貝(也就是10);

2.x被乘以3后,值變?yōu)?0。但是percent仍然是10;

3.該方法結(jié)束后,參數(shù)變量x不再使用。

如圖一:

二.java方法傳參類(lèi)型:

基本數(shù)據(jù)類(lèi)型:(數(shù)字,布爾型)

對(duì)象引用類(lèi)型:

基本數(shù)據(jù)類(lèi)型傳參在上例中已經(jīng)說(shuō)過(guò)了,是不能修改基本數(shù)據(jù)類(lèi)型參數(shù)的值的.

那么對(duì)于對(duì)象引用類(lèi)型的傳參,能否修改呢?

先來(lái)看例子:

有如下方法:

public static void tripleSalary(Employee x)

{

x.raiseSalary(200);

}

當(dāng)調(diào)用如下代碼

harry = new Employee();

tripleSalary(harry);

時(shí),具體的執(zhí)行過(guò)程如下:

1).x被初始化為harry對(duì)象的拷貝,這里是一個(gè)對(duì)象的引用;

2).raiseSalary方法應(yīng)用于這個(gè)對(duì)象引用.即x和harry同時(shí)引用的Employee對(duì)象薪金提高了200%.

3).方法調(diào)用結(jié)束后,參數(shù)變量x不再使用.但對(duì)象變量harry繼續(xù)引用那個(gè)薪金增至3倍Employee對(duì)象.

其過(guò)程如下圖:

通過(guò)以上實(shí)例,可以看出對(duì)象參數(shù)傳遞的是對(duì)象引用的拷貝,對(duì)象引用及其他的拷貝同時(shí)引用同一個(gè)對(duì)象.

很多程序語(yǔ)言提供兩種傳遞方式:值傳遞和引用傳遞(C++和Pascal).

有些程序員認(rèn)為java語(yǔ)言對(duì)對(duì)象參數(shù)傳遞也是用的引用調(diào)用.實(shí)際上是理解錯(cuò)誤.這種錯(cuò)誤具有一定的普遍性.下面通過(guò)一反例來(lái)說(shuō)明該問(wèn)題:

首先,編寫(xiě)一個(gè)交換兩個(gè)Employee對(duì)象的方法:

public staitc void swap(Employee x,Emplyee y)

{

Employee temp = x;

x = y;

y = temp;

}

如果JAVA程序語(yǔ)言是對(duì)對(duì)象采用引用調(diào)用,那么這個(gè)方法就應(yīng)該能夠?qū)崿F(xiàn)交換數(shù)據(jù)的效果:

Employee a = new Employee("Alice",...);

Employee b = new Employee("Bob",...);

swap(a,b);

但是,方法并沒(méi)有改變存儲(chǔ)在變量a和b中的對(duì)象引用。swap方法的參數(shù)x和y被初始化為兩個(gè)對(duì)象引用的拷貝,這個(gè)方法交換的是這兩個(gè)拷貝。

在方法結(jié)束時(shí),參數(shù)變量x和y被丟棄了。原來(lái)的變量a和b仍然引用這個(gè)方法調(diào)用之前所引用的對(duì)象如下圖:

這個(gè)過(guò)程說(shuō)明:java語(yǔ)言對(duì)對(duì)象采用的不是引用調(diào)用,實(shí)際上對(duì)象引用進(jìn)行的是值傳遞。

最后總結(jié)一下在JAVA中,方法參數(shù)的使用情況:

*一個(gè)方法不能修改一個(gè)基本數(shù)據(jù)類(lèi)型的參數(shù);

*一個(gè)方法可以改變一個(gè)對(duì)象參數(shù)的狀態(tài)(屬性);

*一個(gè)方法不能實(shí)現(xiàn)讓對(duì)象參數(shù)引用一個(gè)新對(duì)象;

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的java方法的传递方式_JAVA基础--方法传参的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。