1. 程式人生 > 實用技巧 >Java基礎--方法

Java基礎--方法

方法定義

方法是是解決一類問題的步驟的有序組合
方法包含於類或物件中
方法在程式中被建立,在其他地方被引用
一個方法處理一件事情
方法的定義格式:
修飾符 返回值型別 方法名(引數型別 引數名){
......
方法體
......
return 返回值
}
實參、形參的概念

package method;

public class Demo01 {
    //main方法
    public static void main(String[] args) {
        int sum = add(1,2);  //實參
        System.out.println(sum);
    }
    public static  int add(int a, int b){  //形參
       return a+b;
    }
}
package method;

public class Demo02 {
    public static void main(String[] args) {
        int big = compare(10,10);
        System.out.println(big);
    }
    public static int compare(int a,int b){
        if(a == b){
            System.out.println(a+ "=" + b );
            return 0;
        }
        return a>b ? a : b;
    }
}

方法過載

方法名相同,引數型別或者引數個數或者引數排列順序不同就是方法過載。

package method;

public class Demo02 {
    public static void main(String[] args) {
        double big = compare(10.0,10.0);
        System.out.println(big);
    }
    public static int compare(int a,int b){
        if(a == b){
            System.out.println(a+ "=" + b );
            return 0;
        }
        return a>b ? a : b;
    }
    public static double compare(double a, double b){
        if(a == b){
            System.out.println(a+ "=" + b );
            return 0;
        }
        return a>b ? a : b;
    }
}

命令列傳參

有時候希望執行一個程式時,在傳遞給她次訊息在,這就靠命令列引數給main()函式實現。

可變引數

JDK1.5開始,Java支援傳遞同類型的可變引數給一個方法
在方法宣告中,在指定引數型別後加一個省略號(.....)
在一個方法中只能指定一個可變引數,而且它必須是該方法的最後一個引數

package method;
//可變引數  不定項引數
public class Demo04 {
    public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        demo04.test(1,2,3,4,5);

        printMax(1.0,2,3.2,0.9);
        printMax(new double[]{10,20.0,5.1,2});
    }
    public void test(int... i){
        System.out.println(i[0]);
        System.out.println(i[1]);
        System.out.println(i[2]);
        System.out.println(i[3]);
        System.out.println(i[4]);
    }

    public static void printMax(double... numbers){
        if(numbers.length ==0){
            System.out.println("No argument passed");
            return;
        }
        double result = numbers[0];
        for (int i = 1; i <numbers.length ; i++) {
            if(numbers[i] > result){
                result = numbers[i];
            }
        }
        System.out.println("最大的數為:" + result);
    }
}

遞迴方法

方法自己呼叫自己
遞迴頭: 什麼時候不呼叫自己的方法

遞迴體:  遞迴函式  
遞迴採用的是棧機制,逐步遞迴就是壓棧,當深度很高的時候,時空性就非常不好,能不要遞迴就不遞迴。

package method;
// n的階乘
public class Demo6 {
    public static void main(String[] args) {
        System.out.println("階乘:"+f(5));
    }
    public static int f(int n){
        if(n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }
}