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.

主站蜘蛛池模板: 日韩毛片视频| 免费毛片全部不收费的| 日韩欧美成人高清在线观看| 亚洲无码精彩视频在线观看| 女人18毛片一级毛片在线| 国产精品无码久久久久久| 久热这里只有精品6| 亚洲无码高清免费视频亚洲| 国产精品开放后亚洲| 久久久国产精品无码专区| 人妻精品久久久无码区色视| 人妻丰满熟妇AV无码区| 中文无码毛片又爽又刺激| a毛片免费观看| 国产美女无遮挡免费视频| 欧洲一区二区三区无码| 久久夜夜视频| 九月婷婷亚洲综合在线| 国产导航在线| 国产一区二区影院| 在线a视频免费观看| 久久精品国产精品青草app| 毛片免费在线| 丝袜无码一区二区三区| a级毛片视频免费观看| 亚洲一区无码在线| 中文字幕乱妇无码AV在线| 1769国产精品视频免费观看| 中文字幕在线看视频一区二区三区| 久久国产乱子| 中文字幕人妻无码系列第三区| 女人18毛片一级毛片在线| 亚洲专区一区二区在线观看| 毛片免费在线视频| 欧美国产视频| 99精品一区二区免费视频| 国产欧美专区在线观看| 日韩av无码精品专区| 午夜啪啪福利| 亚洲国产在一区二区三区| 国产日韩精品一区在线不卡| 性色一区| 青青久在线视频免费观看| 高清色本在线www| 久久五月天国产自| 国产精品熟女亚洲AV麻豆| 成人第一页| av在线无码浏览| 最新日韩AV网址在线观看| 午夜视频免费试看| 国产欧美日韩综合一区在线播放| 国产成人欧美| 97在线免费| 免费一级毛片在线观看| 国产玖玖玖精品视频| av在线无码浏览| 中文字幕精品一区二区三区视频| 99青青青精品视频在线| 国产成人高清精品免费5388| 一本色道久久88| 无码视频国产精品一区二区| 欧美日韩中文字幕二区三区| 亚洲无码电影| 免费又黄又爽又猛大片午夜| 国产人人乐人人爱| 午夜福利网址| 日韩欧美国产中文| 自偷自拍三级全三级视频| 久久国语对白| 曰韩人妻一区二区三区| 无码一区二区波多野结衣播放搜索| 一本无码在线观看| 亚洲国产清纯| 91精品人妻互换| 国产精品亚洲一区二区三区在线观看| 中文字幕永久视频| 国产香蕉在线| 色爽网免费视频| 成人一级免费视频| 久久伊人操| 一级毛片不卡片免费观看| 97视频免费在线观看|