JAVA小白的崛起之路(二)方法
函数也叫方法或者功能
就是可以用来完成特定功能的代码块,有名字,还可以传参数。可以用来重复使用
定义和使用
方法的定义|创建
位置:类中,所有的方法之外
语法:
public static 返回值类型 方法名(类型 变量名1, 类型 变量名2){
方法体; 实现功能的具体步骤
}
public 权限修饰符:公开的
static : 静态, 现在可以直接在主方法中调用
返回值类型:
void
: 方法没有返回值
类型 : 方法有返回值
方法名:方法的标记,方便后期调用和查找
(): 可以传入参数
{}: 执行步骤
定义方法的步骤:1、根据需求,看出方法的功能 2、根据功能给方法取一个见名知意的名字 3、根据题意确定方法的参数(自己不能确定的,需要外界指定的) 4、根据题意确定方法是否需要返回值
注意:方法分定义和执行,如果只有定义,方法是不生效,要能够执行方法,方法必须在主方法中直接或间接被调用
方法的调用
位置:主方法
语法: 方法名(实参列表)
方法的分类
根据方法是否有返回值以及参数
无参无返回值:好比你跟你爸要生活费, 你不需要送礼,你也得不到任何东西
无参带返回值:好比你跟你你妈要生活费,不需要任何付出,但是可以得到回馈
带参无返回值:好比你去玩游戏,投入了时间和金钱,但是最后什么都没有了
有参有返回值:好比你去商店买东西,一手交钱,一手交货
编写一个方法时,请思考这四个方面:
1)、确定方法的功能
2)、确定方法的名称(根据需求|功能确定一个见名知意的名称)
3)、此方法能否独立运行,不能独立,需要外界数据参与运算,确定形参。
4)、此方法完成后,其结果是否直接影响调用处的后续操作,如果影响,确定返回 类型,不影响则为 void
参数
定义:形式参数(变量), 类型,名称,数量
类型:规定实参给的数据的类型
名称:在方法体内部使用这个变量(数据)
数量:规定实参的数量
调用:实参(数据)
实参会将数据按照位置 依次给到形参,个数、类型必须和形参匹配
有多少个形参就必须有多少个实参,类型兼容
返回值
方法头:包括修饰符,返回值,方法名,参数列表
返回值:规定了方法执行之后是否有结果送出,是什么类型
void
: 在方法体中,不能有返回值, 在return
后面不能跟数据
非void
: 在方法体中,必须有return ,后面必须跟数据,数据的类型必须和返回值类型兼容
return 关键字
只能出现在方法体中
1、提前结束方法,结束这个方法
2、送出返回值
方法的调用
方法的调用,其实就是将方法进行压栈处理,每一个方法被调用到都会被存入栈顶,一旦方法执行结束之后,就会从栈顶弹出去。
方法的参数值传递
方法定义(代码)
调用到的时候,才会执行 -> 需要将代码(指令)加载到内存,方法栈,栈(局部变量)
方法签名是调用方法的唯一标识:方法名+参数列表(类型,个数,顺序)
在一个类中,方法签名必须唯一
在主方法(直接|间接)调用其他方法的时候都是通过方法签名去找方法的
方法重载
名字很重要
如果多个方法完成的功能是类似的,你的方法名可以相同,但是必须要整,形参列表不同(个数,类型,顺序)
重载的滥用
递归
一个方法直接或间接调用自己,就是递归
递归体:方法本身要做的事情
递归头:停止递归的条件
缺点:需要大量的测试;容易造成内存溢出
优点:缩短代码量
方法重写与方法重载
重载 :
同一个类中的多个方法
方法名相同
方法签名不同|参数列表不同
重写 :
不同的类
继承|实现
方法签名相同
== 方法签名
<= 返回值类型 : 基本->相等 引用: 子类<=父类
>= 权限修饰符
(方法重载无关返回值类型和方法访问权限)。
方法重写条件:两同两小一大
- 方法名相同,参数类型相同
- 子类返回类型小于等于父类方法返回类型,
- 子类抛出异常小于等于父类方法抛出异常,
- 子类访问权限大于等于父类方法访问权限。
以下方法不能重写:
- private 修饰的方法
- static 修饰的方法
- final 修饰的方法