天天看點

猿創征文 | Java知識【方法】

目錄

​​1,方法概述​​

​​1.1:方法的概念​​

​​2,方法的定義和調用​​

​​2.1:無參數方法定義和調用​​

​​2.2:無參數方法的練習​​

​​3,帶參數方法定義和調用​​

​​3.1:帶參數方法定義和調用​​

​​3.2:形參和實參​​

​​3.3:帶參數方法練習​​

​​4,帶傳回值方法的定義和調用​​

​​4.1:帶傳回值方法定義和調用​​

​​4.2:帶傳回值方法練習1:​​

​​4.2:帶傳回值方法練習2:​​

​​4.3:帶傳回值方法練習3:​​

​​5,方法的注意事項​​

​​5.1:方法的注意事項​​

​​5.2:方法的通用格式​​

​​6,方法重載​​

​​6.1:方法重載​​

​​6.2:方法重載練習​​

​​7,重載和重寫的差別(面試題)​​

1,方法概述

1.1:方法的概念

方法(method)是程式中最小的執行單元

  • 注意:
  • 方法必須先建立才可以使用,該過程成為方法定義
  • 方法建立後并不是直接可以運作的,需要手動使用後,才執行,該過程成為方法調用

2,方法的定義和調用

2.1:無參數方法定義和調用

定義格式:

public static void 方法名 (   ) {
  // 方法體;
}      

範例:  

public static void method (    ) {
  // 方法體;
}      

調用格式:  

方法名();      

注意:  方法必須先定義,後調用,否則程式将報錯

2.2:無參數方法的練習

  • 需求:設計一個方法用于列印兩個數中的較大數
  • 思路:
  • ①定義一個方法,用于列印兩個數字中的較大數,例如getMax()
  • ②方法中定義兩個變量,用于儲存兩個數字
  • ③使用分支語句分兩種情況對兩個數字的大小關系進行處理
  • ④在main()方法中調用定義好的方法
  • 代碼:
public class MethodTest {
    public static void main(String[] args) {
        //在main()方法中調用定義好的方法
        getMax();
    }

    //定義一個方法,用于列印兩個數字中的較大數,例如getMax()
    public static void getMax() {
        //方法中定義兩個變量,用于儲存兩個數字
        int a = 10;
        int b = 20;

        //使用分支語句分兩種情況對兩個數字的大小關系進行處理
        if(a > b) {
            System.out.println(a);
        } else {
            System.out.println(b);
        }
    }
}      

3,帶參數方法定義和調用

3.1:帶參數方法定義和調用

定義格式:

參數:由資料類型和變量名組成 - 資料類型 變量名

參數範例:int a

public static void 方法名 (參數1) {
  方法體;
}

public static void 方法名 (參數1, 參數2, 參數3...) {
  方法體;
}      

範例:  

public static void isEvenNumber(int number){
    ...
}
public static void getMax(int num1, int num2){
    ...
}      

注意:  

方法定義時,參數中的資料類型與變量名都不能缺少,缺少任意一個程式将報錯

方法定義時,多個參數之間使用逗号( ,)分隔

調用格式:  

方法名(參數);

方法名(參數1,參數2);      

範例:  

isEvenNumber(10);

getMax(10,20);      
  • 方法調用時,參數的數量與類型必須與方法定義中的設定相比對,否則程式将報錯

3.2:形參和實參

  1. 形參:方法定義中的參數

等同于變量定義格式,例如:int number

  1. 實參:方法調用中的參數

等同于使用變量或常量,例如: 10 number

3.3:帶參數方法練習

  • 需求:設計一個方法用于列印兩個數中的較大數,資料來自于方法參數 }
  • 思路:
  • ①定義一個方法,用于列印兩個數字中的較大數,例如getMax()
  • ②為方法定義兩個參數,用于接收兩個數字
  • ③使用分支語句分兩種情況對兩個數字的大小關系進行處理
  • ④在main()方法中調用定義好的方法(使用常量)
  • ⑤在main()方法中調用定義好的方法(使用變量)
  • 代碼:
public class MethodTest {
    public static void main(String[] args) {
        //在main()方法中調用定義好的方法(使用常量)
        getMax(10,20);
        //調用方法的時候,人家要幾個,你就給幾個,人家要什麼類型的,你就給什麼類型的
        //getMax(30);
        //getMax(10.0,20.0);

        //在main()方法中調用定義好的方法(使用變量)
        int a = 10;
        int b = 20;
        getMax(a, b);
    }

    //定義一個方法,用于列印兩個數字中的較大數,例如getMax()
    //為方法定義兩個參數,用于接收兩個數字
    public static void getMax(int a, int b) {
        //使用分支語句分兩種情況對兩個數字的大小關系進行處理
        if(a > b) {
            System.out.println(a);
        } else {
            System.out.println(b);
        }
    }
}      

4,帶傳回值方法的定義和調用

4.1:帶傳回值方法定義和調用

定義格式

public static 資料類型 方法名 ( 參數 ) { 
  return 資料 ;
}      

範例  

public static boolean isEvenNumber( int number ) {           
  return true ;
}
public static int getMax( int a, int b ) {
  return  100 ;
}      
  • 注意:
  • 方法定義時return後面的傳回值與方法定義上的資料類型要比對,否則程式将報錯

 調用格式

方法名 ( 參數 ) ;
資料類型 變量名 = 方法名 ( 參數 ) ;      

範例  

isEvenNumber ( 5 ) ;
boolean  flag =  isEvenNumber ( 5 );      
  • 注意:
  • 方法的傳回值通常會使用變量接收,否則該傳回值将無意義

4.2:帶傳回值方法練習1:

  • 需求:設計一個方法可以擷取兩個數的較大值,資料來自于參數
  • 思路:
  • ①定義一個方法,用于擷取兩個數字中的較大數
  • ②使用分支語句分兩種情況對兩個數字的大小關系進行處理
  • ③根據題設分别設定兩種情況下對應的傳回結果
  • ④在main()方法中調用定義好的方法并使用變量儲存
  • ⑤在main()方法中調用定義好的方法并直接列印結果
  • 代碼:
public class MethodTest {
    public static void main(String[] args) {
        //在main()方法中調用定義好的方法并使用變量儲存
        int result = getMax(10,20);
        System.out.println(result);

        //在main()方法中調用定義好的方法并直接列印結果
        System.out.println(getMax(10,20));
    }

    //定義一個方法,用于擷取兩個數字中的較大數
    public static int getMax(int a, int b) {
        //使用分支語句分兩種情況對兩個數字的大小關系進行處理
        //根據題設分别設定兩種情況下對應的傳回結果
        if(a > b) {
            return a;
        } else {
            return b;
        }
    }
}      

4.2:帶傳回值方法練習2:

需求:

定義一個方法,求一家商場每個季度的營業額。根據方法結果再計算出全年營業額。

代碼示例:

public class MethodDemo9 {
    public static void main(String[] args) {
        /*需求:定義一個方法,求一家商場每個季度的營業額。
        根據方法結果再計算出全年營業額。*/
        int sum1 = getSum(10, 20, 30);
        int sum2 = getSum(10, 20, 30);
        int sum3 = getSum(10, 20, 30);
        int sum4 = getSum(10, 20, 30);

        int sum = sum1 + sum2 + sum3 + sum4;
        System.out.println(sum);

    }

    //心得:
    //1.我要幹嘛?  決定了方法體   每個季度的營業額
    //2.我幹這件事情,需要什麼才能完成? 決定了形參 需要三個月的營業額 a b c
    //3.我幹完這件事情,看調用處是否需要使用方法的結果。   決定了傳回值
    //如果需要使用,那麼必須傳回
    //如果不需要使用,可以傳回也可以不傳回
    public static int getSum(int month1,int month2,int month3){
        int sum = month1 + month2 + month3;
        //因為方法的調用處,需要繼續使用這個結果
        //是以我們必須要把sum傳回
        return sum;
    }
}      

4.3:帶傳回值方法練習3:

需求:

鍵盤錄入兩個圓的半徑(整數),比較兩個圓的面積。

代碼示例:

public class MethodDemo10 {
    public static void main(String[] args) {
        //需求:鍵盤錄入兩個圓的半徑(整數),比較兩個圓的面積。
        //鍵盤錄入圓的半徑
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入圓的半徑");
        int radii1 = sc.nextInt();

        System.out.println("請輸入第二個圓的半徑");
        int radii2 = sc.nextInt();
        double area1 = getArea(radii1);
        double area2 = getArea(radii2);
        if(area1 > area2){
            System.out.println("第一個圓更大");
        }else{
            System.out.println("第二個圓更大");
        }
    }

    //心得:
    //1.我要幹嘛?   求圓的面積
    //2.我幹這件事情,需要什麼才能完成?        半徑
    //3.方法的調用處,是否需要繼續使用方法的結果    要比較
    public static double getArea(int radii) {
        double area = 3.14 * radii * radii;
        return area;
    }
}      

5,方法的注意事項

5.1:方法的注意事項

方法不能嵌套定義

  • 示例代碼:
public class MethodDemo {
    public static void main(String[] args) {

    }

    public static void methodOne() {
        public static void methodTwo() {
            // 這裡會引發編譯錯誤!!!
        }
    }
}      

void表示無傳回值,可以省略return,也可以單獨的書寫return,後面不加資料

  • 示例代碼:
public class MethodDemo {
    public static void main(String[] args) {

    }
    public static void methodTwo() {
        //return 100; 編譯錯誤,因為沒有具體傳回值類型
        return;    
        //System.out.println(100); return語句後面不能跟資料或代碼
    }
}      

5.2:方法的通用格式

格式:

public static 傳回值類型 方法名(參數) {
   方法體; 
   return 資料 ;
}      
  • 解釋:
  • public static 修飾符,目前先記住這個格式

    傳回值類型 方法操作完畢之後傳回的資料的資料類型

    如果方法操作完畢,沒有資料傳回,這裡寫void,而且方法體中一般不寫return

    方法名 調用方法時候使用的辨別

    參數 由資料類型和變量名組成,多個參數之間用逗号隔開

    方法體 完成功能的代碼塊

    return 如果方法操作完畢,有資料傳回,用于把資料傳回給調用者

  • 定義方法時,要做到兩個明确
  • 明确傳回值類型:主要是明确方法操作完畢之後是否有資料傳回,如果沒有,寫void;如果有,寫對應的資料類型
  • 明确參數:主要是明确參數的類型和數量
  • 調用方法時的注意:
  • void類型的方法,直接調用即可
  • 非void類型的方法,推薦用變量接收調用

6,方法重載

6.1:方法重載

  • 方法重載概念

    方法重載指同一個類中定義的多個方法之間的關系,滿足下列條件的多個方法互相構成重載

  • 多個方法在同一個類中
  • 多個方法具有相同的方法名
  • 多個方法的參數不相同,類型不同或者數量不同
  • 注意:
  • 重載僅對應方法的定義,與方法的調用無關,調用方式參照标準格式
  • 重載僅針對同一個類中方法的名稱與參數進行識别,與傳回值無關,換句話說不能通過傳回值來判定兩個方法是否互相構成重載
  • 正确範例:
public class MethodDemo {
    public static void fn(int a) {
        //方法體
    }
    public static int fn(double a) {
        //方法體
    }
}

public class MethodDemo {
    public static float fn(int a) {
        //方法體
    }
    public static int fn(int a , int b) {
        //方法體
    }
}      
public class MethodDemo {
    public static void fn(int a) {
        //方法體
    }
    public static int fn(int a) {    /*錯誤原因:重載與傳回值無關*/
        //方法體
    }
}

public class MethodDemo01 {
    public static void fn(int a) {
        //方法體
    }
} 
public class MethodDemo02 {
    public static int fn(double a) { /*錯誤原因:這是兩個類的兩個fn方法*/
        //方法體
    }
}      

6.2:方法重載練習

  • 需求:使用方法重載的思想,設計比較兩個整數是否相同的方法,相容全整數類型(byte,short,int,long)
  • 思路:
  • ①定義比較兩個數字的是否相同的方法compare()方法,參數選擇兩個int型參數
  • ②定義對應的重載方法,變更對應的參數類型,參數變更為兩個long型參數
  • ③定義所有的重載方法,兩個byte類型與兩個short類型參數
  • ④完成方法的調用,測試運作結果
  • 代碼:
public class MethodTest {
    public static void main(String[] args) {
        //調用方法
        System.out.println(compare(10, 20));
        System.out.println(compare((byte) 10, (byte) 20));
        System.out.println(compare((short) 10, (short) 20));
        System.out.println(compare(10L, 20L));
    }

    //int
    public static boolean compare(int a, int b) {
        System.out.println("int");
        return a == b;
    }

    //byte
    public static boolean compare(byte a, byte b) {
        System.out.println("byte");
        return a == b;
    }

    //short
    public static boolean compare(short a, short b) {
        System.out.println("short");
        return a == b;
    }

    //long
    public static boolean compare(long a, long b) {
        System.out.println("long");
        return a == b;
    }

}      

7,重載和重寫的差別(面試題)