一、方法的定义
1、存在问题
方法用来解决代码重复编写冗余以及修改不便,可读性差等的问题
2、什么是方法
简单的说:方法就是完成特定功能的代码块(代码片段)
将重复的功能进行提取
在很多语言里面都有函数的定义,函数在Java中被称为方法
3、如何定义方法
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 方法体; //函数体 return 返回值; }
修饰符可以省略,目前统一写
public static
方法名 - “起名” - 遵循标识符的命名规范,见名知意
参数列表 - 限定方法接收的参数的个数和类型
参数类型,限定调用方法时传入参数的数据类型
参数名,接收调用方法时传入的参数, 循标识符的命名规范
方法可以没有参数
方法体 - 完成功能的代码
return
返回值 - 结束方法以及返回方法指定类型的值
return
返回值一定要和方法返回值类型兼容- 方法可以没有返回值
- 此时返回值类型是**
void
**- 此时
return
语句可以不写或者写为return;
方法定义在类中,和main方法平行。
当方法无返回值,调用时直接输入方法名(参数),不需要输出,会出错
二、方法重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
- 方法重载和返回值类型没有关系,只看方法名和参数列表
- 在调用时,JVM通过参数列表的不同来区分同名方法。
三、递归调用
定义:方法定义方法本身
合法的递归调用:
- 方法调用方法本身
- 要有明确的退出条件
非法的递归调用没有明确的退出条件,出现
StachOverflowError
错误运行异常有两种问题
Error错误- 可以编译,但是运行后系统崩溃错误
Exception异常 - 编译不通过,代码修改
斐波那契数列:
第n项的前两项的和
public static int f(int n){ if(n == 1 || n ==2){ return 1; // return 1; 必须得有明确的退出条件,负责错误 } return f(n -1) +f(n - 2); //调用方法本身 }