- 相關(guān)推薦
JAVA語言中的參數(shù)傳遞
導(dǎo)語:在程序設(shè)計(jì)中,C語言或者C++語言的一些參數(shù)傳值或者地址都十分明確,但是在JAVA中還存在著一些爭(zhēng)論,甚至有所謂的結(jié)論認(rèn)為:在JAVA里參數(shù)傳遞是按值傳遞。下面就由小編為大家介紹一下JAVA語言中的參數(shù)傳遞,歡迎大家閱讀!
一、按值傳遞
所謂的按值傳遞是指在調(diào)用方法時(shí),是根據(jù)值的拷貝進(jìn)行參數(shù)傳遞,其最顯著的特點(diǎn)也是其所傳遞的參數(shù)是值的拷貝,傳遞后即互不相干,可以通過以下示例說明:
public class TempTest{
private void test1(int a){
a=5;
System.out.println("test1方法中的a==="+a);
}
public static void main(String[]args){
TempTest t=new TempTes(t);
int a=3;
t.test1(a);//
在進(jìn)行傳遞后,test1方法中所改變的變量值不會(huì)對(duì)此處的a產(chǎn)生影響。
System.out.println("main方法中的a==="+a);
}
}
運(yùn)行結(jié)果是:
test1方法中的a===5
main方法中的a===3
二、按引用傳遞
所謂的按引用傳遞是指方法調(diào)用的過程中,按照引用實(shí)現(xiàn)參數(shù)的傳遞,其所傳遞的參數(shù)內(nèi)容是引用地址,即變量對(duì)的內(nèi)存空間地址。按引用傳遞也著顯著的特點(diǎn),它所傳遞的內(nèi)容是值的引用,無論傳遞前還是傳遞后均指向同個(gè)內(nèi)存空間?梢酝ㄟ^以下示例加以說明:
第1行public class TempTest{
第2行private void test1(A a){
第3行a.age=20;
第4行System.out.println("test1方法中的age="+a.age);
第5行}
第6行public static void main(String[]args){
第7行TempTest t=new TempTes(t);
第8行A a=new A();
第9行a.age=10;
第10行t.test1(a);
第11行System.out.println("main方法中的age="+a.age);
第12行}
第13行}
第14行class A{
第15行public int age=0;
第16行}
運(yùn)行結(jié)果如下:
test1方法中的age=20
main方法中的age=20
三、內(nèi)存分配示意圖
要準(zhǔn)確理解按引用傳遞的過程,就要清楚的知道內(nèi)存分配的過程,可以通過以下示例進(jìn)行說明:
(1):運(yùn)行開始,運(yùn)行第8行,創(chuàng)建了一個(gè)A的實(shí)例,內(nèi)存分配示意如下:
main方法中的變量a
(此處是一個(gè)A的實(shí)例,age=0)
(2):運(yùn)行第9行,是修改A實(shí)例里面的age的值,運(yùn)行后內(nèi)存分配示意如下:
main方法中的變量a
(此時(shí)age=10)
3):運(yùn)行第10行,是把main方法中的變量a所引用的內(nèi)存空間地址,按引用傳遞給test1方法中的a變量。請(qǐng)注意:這兩個(gè)a變量是完全不同的,不要被名稱相同所蒙蔽。內(nèi)存分配示意如下:
main方法中的變量a
(此時(shí)age=10)
按引用傳遞賦值給test1方法中的變量a,因?yàn)槭前匆脗鬟f,即所傳遞的內(nèi)容是內(nèi)存空間地址,因此在傳遞結(jié)束后,內(nèi)存示意圖就會(huì)形成一個(gè)新的形式:
main方法中的變量a
test1方法中的變量a
(此時(shí)age=10)
即兩個(gè)變量均指向同一空間。
(4):運(yùn)行第3行,為test1方法中的變量a指向的A實(shí)例的age進(jìn)行賦值,完成后形成的新的內(nèi)存示意圖如下:
main方法中的變量a
test1方法中的變量a
(此時(shí)age=20)
此時(shí)A實(shí)例的age值的變化是由test1方法引起的
(5):運(yùn)行第4行,根據(jù)此時(shí)的內(nèi)存示意圖,輸出test1方法中的age=20
(6):運(yùn)行第11行,根據(jù)此時(shí)的內(nèi)存示意圖,輸出main方法中的age=20
四、利用ASP實(shí)現(xiàn)JAVA在網(wǎng)頁(yè)中的參數(shù)傳遞
通常JAVA要從其所在的超文本中獲取參數(shù),假如這些參數(shù)可預(yù)知或者不常改變,那么只需將對(duì)應(yīng)的參數(shù)直接輸出超文本中即可。但是如果這些參數(shù)是無法預(yù)知或者經(jīng)常變化的動(dòng)態(tài)參數(shù),那么就要相應(yīng)的更改超文本中的這些參數(shù)。我們可以利用ASP實(shí)現(xiàn)這一功能。我們可以通過以下案例加以說明:
【JAVA語言中的參數(shù)傳遞】相關(guān)文章:
詳解Java語言中的參數(shù)傳遞11-08
java語言參數(shù)傳遞介紹06-12
Java語言中方法之間數(shù)據(jù)傳遞的探討10-30
JAVA語言中的實(shí)例變量06-01
Java語言中的常見錯(cuò)誤10-01