1. 程式人生 > >05_Java基礎語法_第5天(方法)

05_Java基礎語法_第5天(方法)

庫存 mst 添加 nts 運算 必須 矩形 size static

今日內容介紹
1、方法基礎知識
2、方法高級內容
3、方法案例

01方法的概述

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

02方法的定義格式

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

03定義方法計算面積

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

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

04調用方法

* A: 調用方法
    * a: 在main函數中調用方法,讓方法執行起來
    * b: 方法的形參
        * 方法要什麽參數我們就給什麽類型的參數。
    * c: 方法的返回值
        * 方法返回什麽類型的值我們就用對應的數據類型的變量來接收

05調用方法執行流程

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

06方法調用的內存圖

* A: 方法調用的內存圖
    * a: 參見\day05\day05(Java基礎語法)\day05_source\方法內存圖.JPG

技術分享圖片

07方法調用的練習

* A: 案例代碼
    /*
       方法的定義練習
    */
    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);
        }
    
        /*
           定義有返回值有參數方法,如求三個數的平均值
           明確方法計算後的數據類型, 返回值類型 double
           明確方法未知數, 三個未知的整數
        */
        public static double getAvg(double a, double b,double c){
             return (a+b+c)/3;
        }
        
        /*
            定義無返回值有參數方法,如打印指定M行,每行N個*號的矩形
            明確方法計算後結果,控制臺輸出圖形,沒有返回值的
            方法中有沒有未知數,圖形行數,和列數,是未知的, 數據類型整數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();
            }
        }
    
        /*
           定義有返回值無參數方法,如鍵盤錄入得到一個整數
           明確方法計算後結果的數據類型 int
           明確有沒有未知數,沒
        */
        public static int getNumber(){
            Scanner sc = new Scanner(System.in);
            //int number = sc.nextInt();
            return sc.nextInt();
        }
        
        /*
           定義無返回值無參數方法,如打印3行,每行3個*號的矩形
           為什麽沒有返回值:
               打印矩形 ,輸出效果,不需要將結果返回
               明確未知數: 不需要未知數
        */
        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: 寫錯了參數列表
    * d: 方法返回值是void,方法中可以省略return 不寫
         return 下面不能有代碼
    * e 方法返回值類型,和return 後面數據類型必須匹配
    * f: 方法重復定義問題
    * g: 調用方法的時候,返回值是void, 不能寫在輸出語句中

09方法的重載

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

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

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

10方法重載註意事項

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

11方法參數是基本數據類型

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

12方法參數是引用數據類型

* A: 方法參數是引用數據類型
    * a: 方法參數是引用類型時,傳遞的是內存地址值。
    

13隨機點名器

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

14庫存案例代碼實現_1

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

15庫存案例代碼實現_2

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

16庫存案例代碼測試

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

05_Java基礎語法_第5天(方法)