# 方法的定义与调用

# 什么是方法

1645405807404.png

# 方法的概念

需求: 重复打印 3 次广告,每次广告输出 3 次。
累死的做法:

/*
方法:某一件事情的固定的流程

需求: 每隔10分钟就弹出三条广告。

 */

public class Demo1 {
    public static void main(String[] args) {
        for (int i = 0; i <3 ; i++) {
            System.out.println("Au9999福字金条1g:417.30");
        }

        System.out.println("====10分钟后======");
        //过去了10分钟
        for (int i = 0; i <3 ; i++) {
            System.out.println("Au9999福字金条1g:417.30");
        }

        //过去了10分钟
        System.out.println("====10分钟后======");
        for (int i = 0; i <3 ; i++) {
            System.out.println("Au9999福字金条1g:417.30");
        }
    }
}

舒服的做法

/*

需求: 每隔10分钟就弹出三条广告。

弊端: 代码复用性较低,代码大量的冗余(重复)

解决问题的办法: 就是使用方法,把打广告代码独立封装成一个方法,然后即可重复的使用。

方法:把一段功能代码独立封装到一个代码块中,然后给这个代码块起一个名字。以后如果需要使用这段代码直接使用名字即可调用。

方法的作用:提高了代码的复用性。
 */

public class Demo2 {
    public static void main(String[] args) {
        printAd();
        System.out.println("====10分钟后======");
        //过去了10分钟
        printAd();

        //过去了10分钟
        System.out.println("====10分钟后======");
        printAd();

    }

    //方法
    public static void printAd(){
        //打广告
        for (int i = 0; i <3 ; i++) {
            System.out.println("Au9999福字金条1g:417.30");
        }
    }

}

Java 中的方法:可以将“一段功能代码”封装成一个独立的“代码块”,并且起个“名字” ,当其他的代码需要这段功能,就可以通过“名字”调用这段代码。

方法的作用:提高代码的重用性

# 方法的定义和调用

  1. 方法是需要定义在类之内方法之外的

1645406324169.png
注意: main 方法和自定义方法没有前后的顺序要求!!

  1. 方法的调用方式

1645406374795.png

# 方法的定义格式

1645406475251.png

# 方法练习

  1. 定义方法可以循环 3 次打印一个“手机广告”:“华为手机,Mate40 RS ,保时捷设计,致敬时代!零售价:11999 元”
  2. 再定义方法可以循环 2 次打印一个“笔记本电脑广告”:“苹果电脑,Apple MacBook Pro 16 寸 ,高能,召唤高手!零售价:18999 元”;
  3. 定义 main()方法,交替 3 次调用两个方法
/*
   1).定义方法可以循环3次打印一个“手机广告”:
     “华为手机,Mate40 RS ,保时捷设计,致敬时代!零售价:11999元”

   2).再定义方法可以循环2次打印一个“笔记本电脑广告”:
    “苹果电脑,Apple MacBook Pro 16寸 ,高能,召唤高手!零售价:18999元”;

   3).定义main()方法,交替3次调用两个方法

 */
public class Demo1 {

    public static void main(String[] args) {
        //调用方法
        printHuawei();
        //调用方法
        printApple();
    }

    //打印华为
    public static void printHuawei(){
        for (int i = 0; i <3 ; i++) {
            System.out.println("华为手机,Mate40 RS ,保时捷设计,致敬时代!零售价:11999元");
        }
    }

    //
    public static void printApple(){
        for (int i = 0; i <2 ; i++) {
            System.out.println("苹果电脑,Apple MacBook Pro 16寸 ,高能,召唤高手!零售价:18999元");
        }
    }


}

案例弊端:其实上面的方法只有打印的次数不清楚,和打印的内容不一样,但是我们编写了大量的重复代码
优化的做法:

/*
以下的两个方法不一样地方:
    1. 循环的次数不一样
    2. 输出的内容。

方法的形式参数的格式:
    public static void 方法名([数据类型 变量名1,数据类型 变量名2]){

    }

    注意:形式参数可以存在也可以不存在的。


注意的事项:
    1. 如果一个方法定义了形参,那么调用方法的时候必须给形参的变量赋予值,否则报错。


疑问: 如果编写代码的时候存在未知的参数,那么就把未知的参数定义为形参? 比如:打印广告,这里就存在两个未知的参数,打印几次?打印什么内容?

 */
public class Demo4 {


    public static void main(String[] args) {
        //1. 调用方法
        printAd(3,"华为手机"); //调用方法传递的参数我们称作为: 实际参数(实参)
        //2. 调用方法
        printAd(2,"apple 手机");



    }

    //定义一个方法
    public static void printAd(int count,String content){ //形式参数,形式参数的两个变量有值了吗?什么时候才能赋予值?调用方法的时候
        for (int i = 0; i <count ; i++) {
            System.out.println(content);
        }
    }


}
  1. 方法的参数表示:此方法从外部接收的数据,方法中需要使用这个数据进行工作
  2. 方法的一个参数:数据类型变量名,其中的“数据类型”可以是 Java 的任何数据类型
  3. 一个方法可以定义多个参数,多个参数直接用逗号隔开: 数据类型 变量名 1, 数据类型 变量名 2, ...., 数据类型 变量名
  4. 定义方法时的参数叫形参,调用方法时的传递的真正数据叫:实参
  5. 方法如果定义了“形参”,调用方法时必须传入相应类型的“实参”,而且必须按顺序传递。
  6. 两个“方法”中的数据不能相互直接访问!!