|NO.Z.00017|——————————|BigDataEnd|——|Java&類和物件.V17|---------------------------------------------|Java.v17|引數傳遞注意事項|
阿新 • • 發佈:2022-04-03
[BigDataJava:Java&類和物件.V17] [BigDataJava.面向物件] [|章節一|類和物件|引數傳遞注意事項|]
一、引數傳遞注意事項
### --- 引數傳遞注意事項 ~~~ ——> 基本資料型別的變數作為方法的引數傳遞時, ~~~ ——> 形參變數數值的改變通常不會影響到實參變數的數值,因為兩個變數有各自獨立的記憶體空間; ~~~ ——> 引用資料型別的變數作為方法的引數傳遞時, ~~~ ——> 形參變數指向內容的改變會影響到實參變數指向內容的數值,因為兩個變數指向同一塊記憶體空間 ~~~ ——> 當引用資料型別的變數作為方法的引數傳遞時, ~~~ ——> 若形參變數改變指向後再改變指定的內容,則通常不會影響到實參變數指向內容的改變, ~~~ ——> 因為兩個變數指向不同的記憶體空間。
### --- 記憶體結構之棧區
~~~ ——> 棧用於存放程式執行過程當中所有的區域性變數。
~~~ ——> 一個執行的Java程式從開始到結束會有多次方法的呼叫。
~~~ ——> JVM會為每一個方法的呼叫在棧中分配一個對應的空間,這個空間稱為該方法的棧幀。
~~~ ——> 一個棧幀對應一個正在呼叫中的方法,棧幀中儲存了該方法的引數、區域性變數等資料。
~~~ ——> 當某一個方法呼叫完成後,其對應的棧幀將被清除。
二、邏輯結構### --- 傳參的相關概念 ~~~ ——> 引數分為形參和實參,定義方法時的引數叫形參,呼叫方法時傳遞的引數叫實參。 ~~~ ——> 呼叫方法時採用值傳遞把實參傳遞給形參,方法內部其實是在使用形參。 ~~~ ——> 所謂值傳遞就是當引數是基本型別時,傳遞引數的值,比如傳遞i=10,真實傳參時, ~~~ ——> 把10賦值給了形參。當引數是物件時,傳遞的是物件的值,也就是把物件的地址賦值給形參。
三、程式設計程式碼
### --- 程式設計程式碼
/*
程式設計實現引數傳遞的測試
*/
四、編譯列印public class ArgumentTest { // 自定義成員方法列印引數傳入的整數資料 // int ia = ib = 10; void show1(int ia) { ia = 200; System.out.println("show方法中:ia = " + ia); // 10 200 } // 自定義成員方法列印引數傳入的陣列內容 void show2(int[] arr1) { arr1 = new int[2]; // 加上改行程式碼後,相當於在堆區中又重新申請一塊記憶體空間 arr1[0] = 200; System.out.println("show方法中:arr1[0] = " + arr1[0]); // 10 200 200 } public static void main(String[] args) { // 1.宣告ArgumentTest型別的引用指向該型別的物件 ArgumentTest at = new ArgumentTest(); // 2.使用引用變數呼叫show1方法進行測試 int ib = 10; at.show1(ib); System.out.println("main方法中:ib = " + ib); // ib = 10 System.out.println("-------------------------------------------------"); // 3.呼叫show2方法進行測試 int[] arr2 = new int[]{10, 20}; at.show2(arr2); System.out.println("main方法中:arr2[0] = " + arr2[0]); // 10 200 10 } }
### --- 編譯
C:\Users\Administrator\Desktop\project>javac ArgumentTest.java
### --- 列印輸出
C:\Users\Administrator\Desktop\project>java ArgumentTest
show方法中:ia = 200
main方法中:ib = 10
-------------------------------------------------
show方法中:arr1[0] = 200
main方法中:arr2[0] = 10
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)