05_Java基礎語法_第5天(方法)
阿新 • • 發佈:2019-03-22
庫存 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天(方法)