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;
}
}