Method


1 呼叫和宣告

上章節有講過方法如何呼叫及宣告方法,以下再回顧一次

ObjectName.functionName( parameter );
taxi.car_break();
-----------------
Taxi煞車中

2 返回型態

2-1宣告返回型態
//返回值void的意思即是沒有返回值
public void sayHello(){ 
    System.out.println("Hello");
}

//返回值int表示會reurn一個int型態的值
public int subtract(int x,int y){
    return x-y;
}

//返回值String表示會reurn一個String型態的值
public String Hello(){
    return "Hello";
}

除了void之外,其他返回值都需要使用return,不然會有編譯錯誤

2-2 接收返回值

比較看看若要列印出Hello,使用sayHello()與Hello()差異在哪裡

sayHello();
String s=Hello();
System.out.println(s);
---------------------
Hello 
Hello
  • 第一行Hello : sayHello()列印出的hello
  • 第二行Hello : 先從hello()取得return回來的string,將其值丟入String s裡,再將s列印出來

3 傳值呼叫vs傳參考呼叫

3-1 傳值呼叫
//PURPOSE:Plus1_CallByValue傳值呼叫
public class MainClass {

    public static void main(String[] args) {
        int a=1;
        Plus1_CallByValue(a);
        System.out.println("a="+a);
    }

    public static void Plus1_CallByValue(int a){
        a++;
    }
}
--------------------------------
a=1

只要function的參數為基本型態,就會使用傳值呼叫

傳值呼叫顧名思義,他就是只傳了過去而已

public static void Plus1(int a){....}

還記得我說過一個變數存活的範圍,只有包住變數最內層的{ }而已,所以雖然下面的變數跟上面的變數都叫做a,但他們指的是不同的東西,所以最後當我們列印上面的a時,他並沒有被加1

3-2 傳參考呼叫
//PURPOSE:Plus2_CallByReference傳參考呼叫
public class MainClass {

    public static void main(String[] args) {

        int[] array=new int[1];
        array[0]=1;

        Plus2_CallByReference(array);
        System.out.println("array[0]="+array[0]);
    }

    public static void Plus2_CallByReference(int[] array2){
        array2[0]++;
    }

}
------------------------------
array[0]=2

只要function的參數為物件型態,就會使用傳參考呼叫

以上述程式碼為例,將陣列array傳入Plus2_CallByReference(),他有了一個新的名字array2,若我們將array2[0]++,array[0]也會被++,原因在於這時的array2其實指的就是我們傳進來的array

同樣是進行++,可以比較一下上面傳值呼叫與下面傳參考呼叫差異性在哪

results matching ""

    No results matching ""