1.为什么要有方法
假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。
发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。
为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,
这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,
程序在需要发射炮弹时调用该方法即可。
2.什么是方法
方法就是完成特定功能的代码块
在很多语言中都有函数的定义,但是在咱们JAVA语言中,我们将其称之为方法。
3.方法的定义
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
方法体;
return 返回值;
}
详细说明
(1)修饰符: 比较多,后面会详细介绍。目前使用 public static
(2) 返回值类型: 用于限定返回值的数据类型
(3)方法名 : 就是一个名称,它的存在是为了方便我们调用方法
(4) 参数类型 : 限定调用方法时传入参数的数据类型
(5) 参数名 : 是一个变量,接收调用方法时传入的参数
这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的.
(6) 方法体 : 完成功能的代码
(7) return : 结束方法以及返回方法指定类型的值
(8) 返回值 : 就是功能的结果,由return带回,带回给调用者
4.方法的注意事项
A: 方法不调用不执行
B: 方法与方法是平级关系,不能嵌套定义
C: 方法定义的时候参数之间用逗号隔开
D: 方法调用的时候不用在传递数据类型
E: 如果方法有明确的返回值,一定要由return带回一个值
案例 方法调用:根据键盘录入的数据输出对应的乘法表
public class print {
public static void main(String[] args) {
Multable(9);
}
public static void Multable(int a){
for(int x=1;x<a;x++){
for(int y=1;y<=x;y++){
System.out.print(x+"*"+y+"="+x*y+" ");
}
System.out.println();
}
}
}
5.方法重载
- 方法重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同,与返回值无关。 - 参数列表不同:
A:参数个数不同
B:参数类型不同
案例:求和案例 2个整数 3个整数 4个整数
public class print {
public static void main(String[] args) {
//下面是针对求和方法的调用
int sum1 = add(1,2);
int sum2 = add(1,2,3);
int sum3 = add(1,2,4,5);
//下面是打印求和的结果
System.out.println("sum1="+sum1);
System.out.println("sum2="+sum2);
System.out.println("sum3="+sum3);
}
//下面的方法实现了两个整数相加
public static int add(int x,int y) {
return x+y;
}
//下面的方法实现了三个整数相加
public static int add(int x,int y,int z) {
return x+y+z;
}
//下面的方法实现了四个整数相加
public static int add(int x,int y,int z,int h) {
return x+y+z+h;
}
}
6.递归
方法定义中调用方法本身的现象
- 递归注意事项
要有出口,否则就是死递归
次数不能太多,否则就内存溢出
6.1递归解决问题的思想及图解
5!
6.2求5!
案例演示:
需求:求5的阶乘
循环实现
public class print {
public static void main(String[] args) {
//定义最终结果变量
int jc = 1;
for (int x = 1; x <= 5; x++) {
jc = jc * x;
}
System.out.println("5的阶乘是:" + jc);
}
}
递归实现
public class print {
public static void main(String[] args) {
System.out.println(factorial(5));
}
public static int factorial(int n){
if(n==1){
return 1;
}
return n*factorial(n-1);
}
}