java語言

當前位置 /首頁/計算機/java語言/列表

JAVA語言中的引數傳遞

導語:在程式設計中,C語言或者C++語言的一些引數傳值或者地址都十分明確,但是在JAVA中還存在著一些爭論,甚至有所謂的結論認為:在JAVA裡引數傳遞是按值傳遞。下面就由小編為大家介紹一下JAVA語言中的引數傳遞,歡迎大家閱讀!

JAVA語言中的引數傳遞

  一、按值傳遞

所謂的按值傳遞是指在呼叫方法時,是根據值的拷貝進行引數傳遞,其最顯著的特點也是其所傳遞的引數是值的拷貝,傳遞後即互不相干,可以通過以下示例說明:

public class TempTest{

private void test1(int a){

a=5;

tln("test1方法中的a==="+a);

}

public static void main(String[]args){

TempTest t=new TempTes(t);

int a=3;

1(a);//

在進行傳遞後,test1方法中所改變的變數值不會對此處的a產生影響。

tln("main方法中的a==="+a);

}

}

執行結果是:

test1方法中的a===5

main方法中的a===3

  二、按引用傳遞

所謂的按引用傳遞是指方法呼叫的過程中,按照引用實現引數的傳遞,其所傳遞的引數內容是引用地址,即變數對的記憶體空間地址。按引用傳遞也著顯著的特點,它所傳遞的內容是值的引用,無論傳遞前還是傳遞後均指向同個記憶體空間。可以通過以下示例加以說明:

第1行public class TempTest{

第2行private void test1(A a){

第3行=20;

第4行tln("test1方法中的age="+);

第5行}

第6行public static void main(String[]args){

第7行TempTest t=new TempTes(t);

第8行A a=new A();

第9行=10;

第10行1(a);

第11行tln("main方法中的age="+);

第12行}

第13行}

第14行class A{

第15行public int age=0;

第16行}

執行結果如下:

test1方法中的age=20

main方法中的age=20

  三、記憶體分配示意圖

要準確理解按引用傳遞的過程,就要清楚的知道記憶體分配的過程,可以通過以下示例進行說明:

(1):執行開始,執行第8行,建立了一個A的例項,記憶體分配示意如下:

main方法中的變數a

(此處是一個A的例項,age=0)

(2):執行第9行,是修改A例項裡面的age的值,執行後記憶體分配示意如下:

main方法中的變數a

(此時age=10)

3):執行第10行,是把main方法中的變數a所引用的記憶體空間地址,按引用傳遞給test1方法中的a變數。請注意:這兩個a變數是完全不同的`,不要被名稱相同所矇蔽。記憶體分配示意如下:

main方法中的變數a

(此時age=10)

按引用傳遞賦值給test1方法中的變數a,因為是按引用傳遞,即所傳遞的內容是記憶體空間地址,因此在傳遞結束後,記憶體示意圖就會形成一個新的形式:

main方法中的變數a

test1方法中的變數a

(此時age=10)

即兩個變數均指向同一空間。

(4):執行第3行,為test1方法中的變數a指向的A例項的age進行賦值,完成後形成的新的記憶體示意圖如下:

main方法中的變數a

test1方法中的變數a

(此時age=20)

此時A例項的age值的變化是由test1方法引起的

(5):執行第4行,根據此時的記憶體示意圖,輸出test1方法中的age=20

(6):執行第11行,根據此時的記憶體示意圖,輸出main方法中的age=20

  四、利用ASP實現JAVA在網頁中的引數傳遞

通常JAVA要從其所在的超文字中獲取引數,假如這些引數可預知或者不常改變,那麼只需將對應的引數直接輸出超文字中即可。但是如果這些引數是無法預知或者經常變化的動態引數,那麼就要相應的更改超文字中的這些引數。我們可以利用ASP實現這一功能。我們可以通過以下案例加以說明:

TAG標籤:語言 JAVA 引數傳遞 #