999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java語言中參數值傳遞和引用傳遞比較

2011-12-31 00:00:00彭健湯穎
科教導刊 2011年18期

摘要方法的參數有形式參數和實際參數兩種形式。根據參數數據類型的不同,當實際參數向形式參數傳遞值時,有著不同的傳遞方式。對于初學者而言,由于不能深入理解參數傳遞在內存中是如何分配的,容易導致參數傳遞錯誤。本文從實例出發,講述參數傳遞的兩種方式,為開發者提供借鑒。

關鍵詞形式參數 實際參數 值傳遞 引用傳遞

中圖分類號:TP312文獻標識碼:A

Parameter Values Transfer and Pass by Reference Comparison in Jave

PENG Jian, TANG Ying

(Jiangxi Financial and Economics Vocational School, Jiujiang, Jiangxi 332000)

AbstractParameter of method have two forms of formal parameters and actual parameters. According to different types of parameters data, when the actual parameters transfer value to formal parameters, it has different transfer mode. For beginners, they unable to deeply understand how parameters transfer allocate in memory, it is easy to cause the parameters transfer errors. This paper, starting from examples to talk about the two passing ways of parameter passing.

Key wordsformal parameters; actual parameters; value transfer; pass by reference

0 引言

在Java語言中,成員方法可以有多個不同數據類型的參數,也可以一個參數都沒有。對于參數我們需要區分形式參數和實際參數的概念。形式參數是指定義成員方法時,括號里面的參數名字。實際參數是指在程序代碼中調用成員方法時,傳遞給方法的參數。而對于參數值傳遞和引用傳遞的區分是令初學者頭疼不已的一個問題。

1 基本數據類型形式參數的值傳遞

Java語言中基本類型包括:int,double等。當形式參數為基本類型時,程序采用單向值傳遞的形式,即將實際參數的值復制一份給形式參數,形式參數值的變化不影響原來的實際參數。示例如下:

public class First{

static int test(int x,int y){

System.out.println(\"運算前形參:x=\"+x+\" y=\"+y);

x=x*2;//改變形參x的值

y=y-1;//改變形參y的值

System.out.println(\"運算后形參:x=\"+x+\" y=\"+y);

return x+y;

}

public static void main(String[] args){

int a=4,b=5,c;

System.out.println(\"運算前實參:a=\"+a+\" b=\"+b);

c=test(a,b);

System.out.println(\"運算后實參:a=\"+a+\" b=\"+b);

}

}

運行結果如下:

運算前實參:a=4 b=5;運算前形參:x=4 y=5

運算后形參:x=8 y=4;運算后實參:a=4 b=5

從結果可以看出,兩個實際參數在運算前后都沒有發生變化,而形式參數的值則發生了改變,說明基本類型參數是單向值傳遞。

2 引用類型形式參數的引用傳遞

程序中經常需要把一個對象作為實際參數進行傳遞,這和基本類型數據的值傳遞情況是不同的,因為此時傳遞的是對象的引用(地址)。當實參對象的引用(地址)被復制給形參時,對形參對象內容進行改變也就是對實參對象內容進行改變。例如:

class Second{int v=0;}

public class Third{

static void test(Second x,int y){

x.v=1;//改變形式參數對象x的成員變量值

y=5;//改變形式參數基本類型(int)變量y的值

}

public static void main(String[] args){

Second a=new Second();

int b=4;

System.out.println(\"運算前實參:a.v=\"+ a.v + \" b=\"+b);

test(a,b);

System.out.println(\"運算后實參:a.v=\"+ a.v + \" b=\"+b);

}

}

運行結果如下:

運算前實參:a.v=0 b=4;運算后實參:a.v=1 b=4

從結果可以看出,當把對象作為方法的參數時,由于它傳遞的是對象的引用(地址),因此形式參數對象內容的改變會影響到實際參數,而基本類型沒有影響。

3 數組參數傳遞比較

數組屬于引用類型,它既可用來存放基本類型數據,又可以用來存放引用類型數據。從本質上說把數組作為參數傳遞,與引用類型參數傳遞是一致的。例如:

public class Four{

public static void test(int[] x,Second[] y){

for(int i=0;i<3;i++)

{x[i]++;y[i].v++;}

}

public static void main(String[] args){

int[] a={1,2,3};

Second[] b={new Second(),new Second(),new Second()};

System.out.print(\"基本類型數組傳遞前元素的值:\");

for(int i=0;i<3;i++)

System.out.print(a[i]+\" \");

System.out.println();

System.out.print(\"引用類型數組傳遞前元素對象屬性v的值:\");

for(int i=0;i<3;i++)

System.out.print(b[i].v+\" \");

System.out.println();

test(a,b);

System.out.printl(\"基本類型數組傳遞后元素的值:\");

for(int i=0;i<3;i++)

System.out.print(a[i]+\" \");

System.out.println();

System.out.print(\"引用類型數組傳遞后元素對象屬性v的值:\");

for(int i=0;i<3;i++)

System.out.print(b[i].v+\" \");

System.out.println();

}

}

運行結果如下:

基本類型數組傳遞前元素的值:1 2 3。

引用類型數組傳遞前元素對象屬性v的值:0 0 0。

基本類型數組傳遞后元素的值:2 3 4。

引用類型數組傳遞后元素對象屬性v的值:1 1 1。

從結果我們可以看出,用數組作為參數傳遞可以改變實際參數的值。說明數組實現的是引用傳遞。

4 總結

通過比較可以看出:基本類型形參采用的是值傳遞,即復制實參數據,形參的改變不影響實參;而引用類型形參采用的是引用傳遞,即復制實參的引用地址,形參的改變實質上就是改變實參。開發者只有深入理解參數傳遞的本質,才能在程序開發中運用自如,提高代碼質量。

參考文獻

[1]張白一,崔尚森.面向對象程序設計——Java.西安電子科技大學出版社,2006.

[2]王克宏.Java技術及其應用.高等教育出版社,1999.

主站蜘蛛池模板: 久久久久亚洲AV成人网站软件| 国产欧美日韩专区发布| 精品国产Av电影无码久久久| 成年人国产视频| 91丨九色丨首页在线播放| 亚洲中字无码AV电影在线观看| 99久久精品免费观看国产| 日韩欧美国产区| 免费毛片视频| 亚洲欧美h| m男亚洲一区中文字幕| 一区二区三区毛片无码| 国产女人18水真多毛片18精品 | 国产欧美日韩综合一区在线播放| 久久大香香蕉国产免费网站| 四虎亚洲精品| 久久久精品无码一二三区| 欧美亚洲欧美区| 波多野结衣一区二区三区88| 2021国产精品自拍| 免费高清毛片| 亚洲婷婷六月| 久久久噜噜噜| 日韩午夜片| 国产精品永久久久久| 免费一级α片在线观看| 四虎影视永久在线精品| 666精品国产精品亚洲| 欧美日本在线观看| 91口爆吞精国产对白第三集| 无码AV日韩一二三区| 成人字幕网视频在线观看| 亚洲欧洲天堂色AV| 日本免费福利视频| 国产9191精品免费观看| 欧美另类图片视频无弹跳第一页| 国产日韩欧美精品区性色| 午夜精品影院| www.亚洲色图.com| 日本欧美成人免费| 亚洲高清无码久久久| 久久综合一个色综合网| m男亚洲一区中文字幕| 欧美啪啪一区| 亚洲激情区| 亚洲无码视频一区二区三区| 91在线激情在线观看| 夜夜操国产| 亚洲精选高清无码| 亚洲日韩精品欧美中文字幕| 精品国产一区91在线| 激情六月丁香婷婷| 婷婷激情五月网| 久久中文字幕av不卡一区二区| 国产呦视频免费视频在线观看| 国产在线无码一区二区三区| 3344在线观看无码| 国产综合精品一区二区| 国内老司机精品视频在线播出| 深爱婷婷激情网| 亚洲激情99| 国产一区二区三区在线精品专区| 中文字幕日韩欧美| 久久久久国产精品嫩草影院| 91亚洲国产视频| 国产成人盗摄精品| 尤物国产在线| 亚洲日本在线免费观看| 亚洲人成影院在线观看| 激情无码字幕综合| 美女国产在线| 亚洲欧美不卡视频| 一级毛片基地| 日本在线欧美在线| 浮力影院国产第一页| 制服无码网站| 九色综合视频网| 91亚瑟视频| 日韩在线播放欧美字幕| 国产在线第二页| 国产综合网站| 干中文字幕|