天天看點

Java學習筆記:7.Java方法詳解

八、Java方法詳解

什麼是方法

方法是語句的集合,他們在一起執行一個功能

  • 方法是解決一類問題的步驟的有序組合
  • 方法包含類或對象中
  • 方法在程式中被建立,在其他地方被引用
  • 方法設計原則:保持方法的原子性,一個方法隻完成一個功能,利于後期拓展
    e.g.
    package com.kuang.method;
    
    public class Demo01 {
        //main方法
        public static void main(String[] args) {
            int add=add(1,2);
    
            System.out.println(add);
        }
    
        //加法
        public static int add(int a,int b){
            return a+b;
        }
    }
    
               

方法的定義及調用

文法
修飾符 傳回值類型 方法名(參數類型 參數名){
    方法體
  	return 傳回值;
}
           
比較大小
package com.kuang.method;

public class Demo02 {
    public static void main(String[] args) {
        int max = max(3, 3);
        System.out.println(max);
    }

    //比大小
    public static int max(int a, int b) {
        if(a==b){
            System.out.println("a=b");
            return a;//終止方法
        }else{
            return a > b ? a : b;
        }
    }
}

           

方法重載

重載就是在一個類中,有相同的函數名稱但是形參不同的函數

方法重載規則:

  • 方法名稱必須相同
  • 參數清單必須不同(個數不同,類型不同,參數排列順序不同)
  • 傳回類型可以相同可以不同
  • 傳回類型不同不足以構成重載
public static void main(String[] args){
    public static int max(int num1,int num2){
        int resault;
        
        return resault;
    }
    public static int max(double num1,int num2){
        return 
    }
}
           

指令行傳參

使用指令行傳遞參數

package com.kuang.method;

public class Demo03 {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("args"+"["+i+"]"+args[i]);
        }
    }
}

           
Java學習筆記:7.Java方法詳解

需要在資料總管中的檔案夾下運作cmd,輸入

javac Demo03.java

進行編譯,運作需要傳回至

src

目錄下,輸入

java 目錄名.檔案名 參數

運作

Java學習筆記:7.Java方法詳解

可變參數

如果出現不清楚多少參數的情況下可以使用可變參數

例如這種情況

public void main(String[] args) {

    }
    public void method(int i){

    }
    public void method(int i,int i1){

    }
    public void method(int i,int i1,int i2){

    }

           

可以使用下面的方法

public void method(int... i) {

}
           
  • 在方法聲明中,在指定參數後面加一個省略号

    ...

  • 方法聲明中隻可定義一個可變參數,必須是方法的最後一個參數,任何普通參數必須在它之前聲明

遞歸

  • 遞歸就是A方法調用A方法
使用遞歸實作階乘
package com.kuang.method;

public class Demo06 {
    public static void main(String[] args) {
        System.out.println(f(5));
    }
    //5! 5*4*3*2*1
    public static int f(int i){
        if(i==1){
            return 1;
        }else{
            return i*f(i-1);
        }
    }
}

           

簡易電腦

package com.kuang.method;

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        double num1 = 0.0;
        double num2 = 0.0;
        double resault = 0.0;
        String operator = "";

        //運算符
        System.out.print("請輸入運算符(輸入其他字元退出):");
        if (scanner.hasNext()) {
            operator = scanner.next();
        }
        while (true) {
            if(operator.equals("x")||operator.equals("X")||operator.equals("*")
           ||operator.equals("/")||operator.equals("+")||operator.equals("-")){
                System.out.println("請輸入兩個數(以空格或回車區分)");
                num1 = scanner.nextDouble();
                num2 = scanner.nextDouble();
            }
            switch (operator) {
                case "*":
                case "x":
                case "X":
                    resault = num1 * num2;
                    break;

                case "/":
                    resault = num1 / num2;
                    break;

                case "+":
                    resault = num1 + num2;
                    break;

                case "-":
                    resault = num1 - num2;
                    break;

                default:
                    System.out.println("程式結束");
                    return;
            }
            System.out.println(num1+operator+num2+"="+resault);
            System.out.print("請輸入運算符(輸入其他字元退出):");
            if (scanner.hasNext()) {
                operator = scanner.next();
            }
        }
    }
}