今日內容介紹
一、方法基礎知識
二、方法高級內容
三、方法案例java
* A: 爲何要有方法 * 提升代碼的複用性 * B: 什麼是方法 * 完成特定功能的代碼塊。
* A: 方法的格式 * 修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2...) { 方法體語句; return 返回值; } * B: 方法的格式說明 * 修飾符:目前就用 public static。後面咱們再詳細的講解其餘的修飾符。 * 返回值類型:就是功能結果的數據類型。 * 方法名:符合命名規則便可。方便咱們的調用。 * 參數: * 實際參數:就是實際參與運算的。 * 形式參數;就是方法定義上的,用於接收實際參數的。 * 參數類型:就是參數的數據類型 * 參數名:就是變量名 * 方法體語句:就是完成功能的代碼。 * return:結束方法的。 * 返回值:就是功能的結果,由return帶給調用者。
* 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; } }
* A: 調用方法 * a: 在main函數中調用方法,讓方法執行起來 * b: 方法的形參 * 方法要什麼參數咱們就給什麼類型的參數。 * c: 方法的返回值 * 方法返回什麼類型的值咱們就用對應的數據類型的變量來接收
* A: 調用方法執行流程 * a: 方法的定義是沒有順序的,寫在main函數的上邊或者下邊均可以。 * b: 方法的執行,是把實參傳遞給形參,從而來執行的。 * c: 方法只有被調用纔會執行。
* A: 方法調用的內存圖 * a: 參見\day05\day05(Java基礎語法)\day05_source\方法內存圖.JPG
* 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(); } } }
* A: 方法的定義和使用的注意事項 * a: 方法不能定義在另外一個方法的裏面 * b: 寫錯方法名字 * c: 寫錯了參數列表 * d: 方法返回值是void,方法中能夠省略return 不寫 return 下面不能有代碼 * e 方法返回值類型,和return 後面數據類型必須匹配 * f: 方法重複定義問題 * g: 調用方法的時候,返回值是void, 不能寫在輸出語句中
* 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; }
* A: 方法重載注意事項 * a: 參數列表必須不一樣 * b: 重載和參數變量名無關 * c: 重載和返回值類型無關 * d: 重載和修飾符無關 * e: 技巧: 重載看方法名和參數列表
* A: 方法參數是基本數據類型 * a: 方法參數是基本類型時,傳遞的是值。
* A: 方法參數是引用數據類型 * a: 方法參數是引用類型時,傳遞的是內存地址值。
* 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] = "小華"; } }
* 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; } }
* 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(); }
* 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; } }