JavaSE中的方法及其相关内容

一,JavaSE中的方法

方法的概述:

简单来说,JavaSE中的方法就是一堆代码的集合,一般用于完成一个特定的功能,使用这个方法就等于使用这个功能。

方法与函数的区别

函数:函数是一段可重复使用的代码块,用于执行特点的任务并返回一个值。

方法:方法是类或对象的行为或操作,用于执行特定的任务和操作。

方法最大的优点就是 1.代码复用 2.易维护易扩展 3.提高代码灵活度

二,方法的声明

方法的声明:

修饰符列表 返回值类型 方法名(参数列表){

方法体

}

我们拆开一个一个说

2.1 修饰符列表

修饰符列表 : 可有,可没有,可有多个。

权限控制4选一:  public , private , protected , 不写即默认权限。

static 表示静态,用于声明静态资源 , 有static表示静态方法,没有static表示成员方法。

注意:多个修饰符,不区分先后顺序。

2.2 返回值类型

返回值类型 : 完成功能后,通过返回值给调用处反馈结果,一般是运算结果。

如果没有返回值,则写void,

如果有返回值,那么需要写返回的数据对应的类型。

返回值可以写11种数据类型 + void(共12种)。

2.3 方法名

方法名符合命名规则即可。

2.4 参数列表

参数列表 : 可以没有,可以有多个,多个用逗号隔开。

()  : 无参

(int a ) : 一个参数

(int a , double b) : 多个参数

三,方法分类与调用

方法分类:

1. 静态方法 : 使用static修饰的方法是静态方法

2. 成员方法 : 没有使用static修饰的方法是成员方法

3. 构造方法 : 创建对象使用

方法调用:方法的调用与变量相同

四,方法的入参与出参

参数列表 :

1. 入参,即调用时需要传入相应的数据,当你要完成一件事的时候,需要用到的必要条件,作为入参。

2. 出参 : 返回值,一般是你的打印语句,是出参(运行结果)。

注意:方法不调用不执行,调用才执行,并把结果返回给调用处。

服务端 : 被调用处,只保证功能可行,最终被用在什么地方与我们无关。

客户端 : 调用处,只需要关心入参和出参,功能如何实现的与我们无关。

五,方法重载

两个方法的方法名相同,参数列表不同(1,个数不同;2,类型不同),就是方法重载。

六,内存划分

方法区/静态区 : 用来保存一些静态相关的资源文件,比如加载到内存中的class文件。

栈内存 : 就是以栈数据结构为模型开辟的一块空间,用于执行方法调用。(栈数据结构特性 : 先进后出 , 类似于子弹夹)

栈帧 :栈内存中的数据

栈底元素 : 第一个添加的栈帧

栈顶元素 : 最后一个添加的栈帧

压栈 : 把栈帧放入栈内存的过程

弹栈 : 在栈内存中把栈帧弹出的过程

方法调用,就是在做压栈操作

方法执行结束,就是在做弹栈操作

堆内存 : 保存对象数据(成员)

所以一个class文件中的main方法的执行过程为:

1 把相关class文件载入静态区;

2 调用class中的main方法,在栈内存开辟栈帧;

3 如果main方法中有其他方法调用,则再次开辟对应栈帧;

4 如果方法体顺利执行完,则弹栈,并返回调用处继续执行;

5 如果main方法弹栈,则意味着程序执行结束,JVM关机;

七,递归

递归 : 递归和迭代(循环)是等价的 , 都需要有终止条件,初始值与步长。

递归有两种:

1. 直接递归 : 方法中调用当前方法(自己调用自己)

2. 间接递归 : A调用B , B 调用A

注意:1. 如果没有终止条件,会出现栈内存移出错误 java.lang.StackOverflowError

2. 递归是一种比较消耗内存的一种算法,效率较低,因为需要频繁的压栈弹栈

3. 循环能做的,递归都能做,所以当一件事可以使用循环解决,就一定不要使用递归

4. 递归场景的应用场景 : 树状结构

递归的经典问题 : 阶乘 , 斐波那契数列 , 汉诺塔...

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值