# 方法的定义与调用
# 什么是方法
# 方法的概念
需求: 重复打印 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 中的方法:可以将“一段功能代码”封装成一个独立的“代码块”,并且起个“名字” ,当其他的代码需要这段功能,就可以通过“名字”调用这段代码。
# 方法的定义和调用
- 方法是需要定义在类之内方法之外的

注意: main 方法和自定义方法没有前后的顺序要求!!
- 方法的调用方式
# 方法的定义格式
# 方法练习
- 定义方法可以循环 3 次打印一个“手机广告”:“华为手机,Mate40 RS ,保时捷设计,致敬时代!零售价:11999 元”
- 再定义方法可以循环 2 次打印一个“笔记本电脑广告”:“苹果电脑,Apple MacBook Pro 16 寸 ,高能,召唤高手!零售价:18999 元”;
- 定义 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);
}
}
}
- 方法的参数表示:此方法从外部接收的数据,方法中需要使用这个数据进行工作
- 方法的一个参数:数据类型变量名,其中的“数据类型”可以是 Java 的任何数据类型
- 一个方法可以定义多个参数,多个参数直接用逗号隔开: 数据类型 变量名 1, 数据类型 变量名 2, ...., 数据类型 变量名
- 定义方法时的参数叫形参,调用方法时的传递的真正数据叫:实参
- 方法如果定义了“形参”,调用方法时必须传入相应类型的“实参”,而且必须按顺序传递。
- 两个“方法”中的数据不能相互直接访问!!