方法的概述

01方法的概述

* A: 為什么要有方法
    * 提高代碼的復(fù)用性 
* B: 什么是方法
    * 完成特定功能的代碼塊。 

02方法的定義格式

* A: 方法的格式
* 
        修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2...) {
            方法體語句;
            return 返回值; 
        } 
* B: 方法的格式說明
    * 修飾符:目前就用 public static。后面我們再詳細(xì)的講解其他的修飾符。
    * 返回值類型:就是功能結(jié)果的數(shù)據(jù)類型。
    * 方法名:符合命名規(guī)則即可。方便我們的調(diào)用。
    * 參數(shù):
        * 實際參數(shù):就是實際參與運(yùn)算的。
        * 形式參數(shù);就是方法定義上的,用于接收實際參數(shù)的。
    * 參數(shù)類型:就是參數(shù)的數(shù)據(jù)類型
    * 參數(shù)名:就是變量名
    * 方法體語句:就是完成功能的代碼。
    * return:結(jié)束方法的。
    * 返回值:就是功能的結(jié)果,由return帶給調(diào)用者。 

03定義方法計算面積

* A: 定義方法計算面積
    public class MethodDemo{

        public static void main(String[] args){
             //調(diào)用方法, 方法執(zhí)行起來
             // 在方法main中,調(diào)用方法 getArea
    
             int area = getArea(5,6);
             System.out.println("面積是: "+area);
            
        }
        /*
           要求: 計算一個長方形的面積
           定義方法解決這個要求
           分析方法定義過程:
              1.明確方法計算后的結(jié)果的數(shù)據(jù)類型 int  定義格式對應(yīng)的就是返回值類型
              2.方法計算過程中,有沒有未知的數(shù)據(jù), 寬和長, 未知數(shù)據(jù)的數(shù)據(jù)類型 int
                  未知數(shù)的變量,定義在方法的小括號內(nèi)
        */
        public static int  getArea(int w, int h){
            //實現(xiàn)方法的功能主體
            //int area = w * h;
            return w * h;
        }
    }

04調(diào)用方法

* A: 調(diào)用方法
    * a: 在main函數(shù)中調(diào)用方法,讓方法執(zhí)行起來
    * b: 方法的形參
        * 方法要什么參數(shù)我們就給什么類型的參數(shù)。
    * c: 方法的返回值
        * 方法返回什么類型的值我們就用對應(yīng)的數(shù)據(jù)類型的變量來接收

05調(diào)用方法執(zhí)行流程

* A: 調(diào)用方法執(zhí)行流程
    * a: 方法的定義是沒有順序的,寫在main函數(shù)的上邊或者下邊都可以。
    * b: 方法的執(zhí)行,是把實參傳遞給形參,從而來執(zhí)行的。
    * c: 方法只有被調(diào)用才會執(zhí)行。

06方法調(diào)用的內(nèi)存圖

* A: 方法調(diào)用的內(nèi)存圖
    * a: 參見\day05\day05(Java基礎(chǔ)語法)\day05_source\方法內(nèi)存圖.JPG

07方法調(diào)用的練習(xí)

* A: 案例代碼
    /*
       方法的定義練習(xí)
    */
    import java.util.Scanner;
    public class MethodDemo_1{
        public static void main(String[] args){
            //printRect();
            //int number = getNumber();
            //System.out.println(getNumber());
            //printRect2(3,5);
            double avg = getAvg(2,2,3);
            System.out.println(avg);
        }
    
        /*
           定義有返回值有參數(shù)方法,如求三個數(shù)的平均值
           明確方法計算后的數(shù)據(jù)類型, 返回值類型 double
           明確方法未知數(shù), 三個未知的整數(shù)
        */
        public static double getAvg(double a, double b,double c){
             return (a+b+c)/3;
        }
        
        /*
            定義無返回值有參數(shù)方法,如打印指定M行,每行N個*號的矩形
            明確方法計算后結(jié)果,控制臺輸出圖形,沒有返回值的
            方法中有沒有未知數(shù),圖形行數(shù),和列數(shù),是未知的, 數(shù)據(jù)類型整數(shù)int
        */
        public static void printRect2(int m,int n){
            for(int i = 0 ; i < m ; i++){
                for(int j = 0 ; j < n ;  j++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    
        /*
           定義有返回值無參數(shù)方法,如鍵盤錄入得到一個整數(shù)
           明確方法計算后結(jié)果的數(shù)據(jù)類型 int
           明確有沒有未知數(shù),沒
        */
        public static int getNumber(){
            Scanner sc = new Scanner(System.in);
            //int number = sc.nextInt();
            return sc.nextInt();
        }
        
        /*
           定義無返回值無參數(shù)方法,如打印3行,每行3個*號的矩形
           為什么沒有返回值:
               打印矩形 ,輸出效果,不需要將結(jié)果返回
               明確未知數(shù): 不需要未知數(shù)
        */
        public static void printRect(){
            for(int i = 0 ; i < 3 ; i++){
                for(int j = 0 ; j < 3 ;j++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }

08方法的定義和使用的注意事項

* A: 方法的定義和使用的注意事項
    * a: 方法不能定義在另一個方法的里面
    * b: 寫錯方法名字
    * c: 寫錯了參數(shù)列表
    * d: 方法返回值是void,方法中可以省略return 不寫
         return 下面不能有代碼
    * e 方法返回值類型,和return 后面數(shù)據(jù)類型必須匹配
    * f: 方法重復(fù)定義問題
    * g: 調(diào)用方法的時候,返回值是void, 不能寫在輸出語句中

09方法的重載

* A: 方法的重載
    * 在同一個類中,方法名相同,參數(shù)列表不同。與返回值類型無關(guān)。

    * 參數(shù)列表不同:
        * A:參數(shù)個數(shù)不同
        * B:參數(shù)類型不同
        * C:參數(shù)的順序不同(算重載,但是在開發(fā)中不用)

* B: 案例代碼
    public static int getSum(int a,int b){
        System.out.println("兩個int參數(shù)");
        return a+b;
    }
    public static int getSum(int a,int b,int c){
        System.out.println("三個int參數(shù)");
        return a+b+c;
    }
    public static double getSum(double a,double b){
        System.out.println("兩個double參數(shù)");
        return a+b;
    }

10方法重載注意事項

* A: 方法重載注意事項
    * a: 參數(shù)列表必須不同
    * b: 重載和參數(shù)變量名無關(guān)
    * c: 重載和返回值類型無關(guān)
    * d: 重載和修飾符無關(guān)
    * e: 技巧: 重載看方法名和參數(shù)列表

11方法參數(shù)是基本數(shù)據(jù)類型

* A: 方法參數(shù)是基本數(shù)據(jù)類型
    * a: 方法參數(shù)是基本類型時,傳遞的是值。

12方法參數(shù)是引用數(shù)據(jù)類型

* A: 方法參數(shù)是引用數(shù)據(jù)類型
    * a: 方法參數(shù)是引用類型時,傳遞的是內(nèi)存地址值。

13隨機(jī)點名器

* A: 案例代碼
    /*
       實現(xiàn)隨機(jī)點名器
         1.存儲所有學(xué)生姓名
         2.預(yù)覽所有學(xué)生姓名,遍歷數(shù)組
         3.隨機(jī)數(shù)作為索引,到數(shù)組中找元素
         
        將功能獨(dú)立出來, 作成方法,調(diào)用方法即可
        
        定義三個功能, 用到同一個姓名數(shù)據(jù)
        姓名存儲到數(shù)組中,三個方法,使用一個數(shù)組中的數(shù)據(jù), 方法傳遞參數(shù)
    */
    import java.util.Random;
    public class CallName{
        public static void main(String[] args){
            //定義數(shù)組,存儲學(xué)生姓名
            String[] names = new String[8];
            //調(diào)用添加姓名方法
            addStudent(names);
            //調(diào)用遍歷數(shù)組方法
            printStudentName(names);
            //調(diào)用隨機(jī)姓名的方法
            String name = randomStudentName(names);
            System.out.println(name);
        }
        /*
          定義方法,隨機(jī)數(shù),做索引,數(shù)組中找到學(xué)生姓名
          返回值?  學(xué)生姓名
          參數(shù)?  數(shù)組
        */
        public static String randomStudentName(String[] names){
            Random ran = new Random();
            int index = ran.nextInt(names.length);
            return names[index];
        }
        
        /*
           定義方法,遍歷數(shù)組
           返回值? 沒有
           參數(shù)? 數(shù)組
        */
        public static void printStudentName(String[] names){
            for(int i = 0 ; i < names.length ;i++){
                System.out.println(names[i]);
            }
        }
        
        /*
           定義方法,實現(xiàn)向數(shù)組中添加學(xué)生姓名
           返回值? 沒有,
           參數(shù)?  參數(shù)就是數(shù)組
        */
        public static void addStudent(String[] names){
            names[0] = "張三";
            names[1] = "李四";
            names[2] = "王五";
            names[3] = "李蕾";
            names[4] = "韓梅梅";
            names[5] = "小名";
            names[6] = "老王";
            names[7] = "小華";
        }
    }

14庫存案例代碼實現(xiàn)_1

* A: 案例代碼
    /*
       實現(xiàn)商品的庫存管理
         功能:
            1.展示用戶選擇功能清單
            2.根據(jù)選擇的功能編號,進(jìn)行不同的操作
               A. 展示所有庫存
               B. 修改庫存數(shù)量
               
          分析:
            1.展示用戶清單:
               輸出語句, 用戶輸入, 選擇功能序號
            2.根據(jù)選擇,調(diào)用不同的方法
                switch語句
                  case 1 2 3
            
               A  展示庫存
                 將存儲商品的數(shù)組,遍歷
               B  修改庫存
                    
                  修改所有的庫存數(shù)量
    */
    import java.util.Scanner;
    public class Shopp{
        public static void main(String[] args){
            
        }
        
        /*
           定義方法,展示所有的庫存清單,遍歷
           返回值,沒有
           參數(shù), 數(shù)組
        */
        public static void printStore(String[] brand,double[] size,double[] price,int[] count){
            System.out.println("----------商場庫存清單----------");
            System.out.println("品牌型號     尺寸    價格    庫存數(shù)");
            //定義變量,計算總庫存數(shù),和總價格
            int totalCount = 0;
            int totalMoney = 0;
            //遍歷數(shù)組,將數(shù)組中所有的商品信息打印出來
            for(int i = 0 ; i < brand.length ; i++){
                System.out.println(brand[i]+"   "+size[i]+"    "+price[i]+"   "+count[i]);
                totalCount += count[i];
                totalMoney += count[i]*price[i];
            }
            System.out.println("總庫存數(shù): "+totalCount);
            System.out.println("商品庫存總金額: "+totalMoney);
        }
        
        /*
          定義方法,實現(xiàn)用戶的選擇功能,功能的需要返回來
          返回值, int
          參數(shù), 沒有
        */
        public static int chooseFunction(){
            System.out.println("-------------庫存管理------------");
            System.out.println("1.查看庫存清單");
            System.out.println("2.修改商品庫存數(shù)量");
            System.out.println("3.退出");
            System.out.println("請輸入要執(zhí)行的操作序號:");
            //接受鍵盤輸入
            Scanner sc = new Scanner(System.in);
            int chooseNumber = sc.nextInt();
            return chooseNumber;
        }
    }

15庫存案例代碼實現(xiàn)_2

* A: 案例代碼
    /*
      定義方法,修改所有商品的庫存
        用戶輸入1個,修改1個
        返回值,沒有
        參數(shù), 庫存數(shù)的數(shù)組, 品名數(shù)組
    */
    public static void update(String[] brand, int[] count){
        //遍歷數(shù)組,遍歷到一個,修改一個
        //接受鍵盤輸入
        Scanner sc = new Scanner(System.in);
        //遍歷數(shù)組
        for(int i = 0; i < brand.length ; i++){
            System.out.println("請輸入"+brand[i]+"的庫存數(shù)");
            //鍵盤輸入,錄入庫存, 存儲到庫存的數(shù)組中
            int newCount = sc.nextInt();
            count[i] = newCount;
        }
        //int chooseNumber = sc.nextInt();
    }

16庫存案例代碼測試

* A: 案例
    /*
       實現(xiàn)商品的庫存管理
         功能:
            1.展示用戶選擇功能清單
            2.根據(jù)選擇的功能編號,進(jìn)行不同的操作
               A. 展示所有庫存
               B. 修改庫存數(shù)量
               
          分析:
            1.展示用戶清單:
               輸出語句, 用戶輸入, 選擇功能序號
            2.根據(jù)選擇,調(diào)用不同的方法
                switch語句
                  case 1 2 3
            
               A  展示庫存
                 將存儲商品的數(shù)組,遍歷
               B  修改庫存
                    
                  修改所有的庫存數(shù)量
    */
    import java.util.Scanner;
    public class Shopp{
        public static void main(String[] args){
            //使用數(shù)組,保存商品的信息
            //品名,尺寸,價格,庫存數(shù), 定義5個數(shù)組
            String[] brand = {"MacBookAir","ThinkpadT450"};
            double[] size = {13.3,15.6};
            double[] price = {9998.97,6789.56};
            int[] count = {0,0};
            while(true){
                int choose = chooseFunction();
                switch(choose){
                    case 1:
                      //調(diào)用查看庫存清單方法
                      printStore(brand,size,price,count);
                    break;
                    
                    case 2:
                      //調(diào)用修改庫存的方法
                      update(brand,count);
                    break;
                    
                    case 3:
                     return ;
                    default:
                      System.out.println("沒有這個功能");
                    break;
                }
            }
        }
        /*
          定義方法,修改所有商品的庫存
            用戶輸入1個,修改1個
            返回值,沒有
            參數(shù), 庫存數(shù)的數(shù)組, 品名數(shù)組
        */
        public static void update(String[] brand, int[] count){
            //遍歷數(shù)組,遍歷到一個,修改一個
            //接受鍵盤輸入
            Scanner sc = new Scanner(System.in);
            //遍歷數(shù)組
            for(int i = 0; i < brand.length ; i++){
                System.out.println("請輸入"+brand[i]+"的庫存數(shù)");
                //鍵盤輸入,錄入庫存, 存儲到庫存的數(shù)組中
                int newCount = sc.nextInt();
                count[i] = newCount;
            }
            //int chooseNumber = sc.nextInt();
        }
        
        /*
           定義方法,展示所有的庫存清單,遍歷
           返回值,沒有
           參數(shù), 數(shù)組
        */
        public static void printStore(String[] brand,double[] size,double[] price,int[] count){
            System.out.println("----------商場庫存清單----------");
            System.out.println("品牌型號     尺寸    價格    庫存數(shù)");
            //定義變量,計算總庫存數(shù),和總價格
            int totalCount = 0;
            int totalMoney = 0;
            //遍歷數(shù)組,將數(shù)組中所有的商品信息打印出來
            for(int i = 0 ; i < brand.length ; i++){
                System.out.println(brand[i]+"   "+size[i]+"    "+price[i]+"   "+count[i]);
                totalCount += count[i];
                totalMoney += count[i]*price[i];
            }
            System.out.println("總庫存數(shù): "+totalCount);
            System.out.println("商品庫存總金額: "+totalMoney);
        }
        
        /*
          定義方法,實現(xiàn)用戶的選擇功能,功能的需要返回來
          返回值, int
          參數(shù), 沒有
        */
        public static int chooseFunction(){
            System.out.println("-------------庫存管理------------");
            System.out.println("1.查看庫存清單");
            System.out.println("2.修改商品庫存數(shù)量");
            System.out.println("3.退出");
            System.out.println("請輸入要執(zhí)行的操作序號:");
            //接受鍵盤輸入
            Scanner sc = new Scanner(System.in);
            int chooseNumber = sc.nextInt();
            return chooseNumber;
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容