1. 程式人生 > >Java實參和形參與傳值和傳引用

Java實參和形參與傳值和傳引用

函數 有效 順序 數組 形參 div spa stat 數據

實參和形參的定義:

形參出現函數定義中,在整個函數體內都可以使用,離開函數則不能使用。

實參出現在主函數中,進入被調函數後,實參變量也不能使用。

形參和實參的功能是做數據傳送。發生函數調用時,主調函數把實參的值傳送給被調函數的形參從而向被調函數傳送數據。

實參和形參的區別:

1.形參變量只有在被調用時才分配內存單元,在調用結束後,立即釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能在使用該形參變量。

2.實參可以變量、函數、數組等。無論實參是何種類型的,在進行函數調用時,他們都必須具有確定的值,一便把這些值傳送給形參。

3.形參和實參在類型、數量、順序上應該保持嚴格的一致。

4.函數在調用中發生的數據傳遞是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向傳送給實參。因此,在函數調用過程中,形參的值發生改變,而實參中的值不會改變。

下面來看實例:

public class Ex2 {

    public static void main(String[] args) {

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

        expand(a);

        changeArray(a);

        printArray(a);

    }

    public static void expand(int
[] a) { int[] newArray = new int[a.length * 2]; System.arraycopy(a, 0, newArray, 0, a.length); a = newArray; } public static void changeArray(int[] a) { a[0] = 10; } public static void printArray(int[] a) { for (int i = 0; i < a.length; i++) { System.out.print(a[i]
+ "\t"); } System.out.println(); } }

輸出結果為:10 2 3 4 5

值傳遞和引用傳遞:

先明白幾個概念:

1、按值傳遞意味著當將一個參數傳遞給一個函數時,函數接收的是原始值的一個副本

2、按引用傳遞意味著當將一個參數傳遞給一個函數時,函數接收的是原始值的內存地址的拷貝,而不是值的副本

3、“在Java裏面參數傳遞都是按值傳遞”這句話的意思是:按值傳遞是傳遞的值的拷貝,按引用傳遞其實傳遞的是引用的地址值,所以統稱按值傳遞。

4、在Java裏面只有基本類型和按照下面這種定義方式的String是按值傳遞,其它的都是按引用傳遞。就是直接使用雙引號定義字符串方式:String str = “Java”;

Java實參和形參與傳值和傳引用