Java 学习 day5: 方法的重载,内存划分,递归思想

1.方法

1.1方法重载

方法重载:方法名字相同,但是参数列表不同

参数列表不同又分为:1.参数的类型不同        2.参数的数量不同

相同的功能,相同的名字,通过不同的参数区分,比较美观,好记,相同功能只需要调用一个方法就行

方法重载只是方便了调用时用到的代码,与方法的声明无关

 2.内存划分

程序:可执行的文件,命令的集合,是个静态概念,保存在硬盘中

进程:就是正在执行的程序,是个动态概念,保存在运行内存中,会按照该程序的设计在内存中一步一步的执行

运行中的程序:  也就是指载入到内存中的可执行文件,操作系统会开启一个进程用来保存运行的这个文件.

如果想要关闭某个程序只需要在内存中把该进程除掉即可

java的内存划分和管理

Java Runtime Data Area:java 运行时数据区域,一般叫JVM内存

分为五大块:1.静态区/方法区  2.VM栈   3.堆内存   4.程序计数器    5本地方法栈

静态区/方法区:用来保存程序文件(class),载入到内存后的class文件保存在静态区中,还有一些静态资源.另外  方法被调用之前也保存在静态区,还有常量池

VM栈:又叫栈内存,用来执行方法

是以栈数据结构为模型穿件的一段空间:先进后出,类似于弹夹

栈空间:就是栈的内存空间

栈帧:就是栈空间(内存)里面存放的元素

栈底元素:第一个放进去的栈元素

栈顶元素:最后一个放进去的元素

栈操作:

进栈:往栈空间内部添加元素的过程,会被压在最下面

出栈:就是把栈内元素从栈内存中弹出来的过程

方法栈:用来执行本地方法,和栈内存一样,使用native修饰的方法,

堆内存:用来保存对象

执行流程:

2.1 开启java虚拟机,然后把对应的文件 Method_02.class 载入内存中的静态区

 *   2.2 载入之后,JVM自动调用该程序中main方法 ,然后再栈内存开辟main方法栈帧,开始执行

 *   2.3 如果main方法中没有其他方法调用,则执行完结束,销毁即可

 *   2.4 如果main方法中有其他方法调用, 如果是其他类中的方法,则把对应类也会加载到静态区,然后调用该方法

 *   2.5 如果是当前类的 方法,直接在栈内存继续压栈即可

 *   2.6 如果被调用方法中还有其他方法调用的话,则步骤同上

 *   2.7 一直到最后一个压栈的方法执行完,弹栈,然后再依次返回调用处继续执行

 *   2.8 一直到main方法执行完,弹栈,程序销毁

 3.递归

递归思想:在方法体中,自己调用自己

递归:递归和迭代和循环是一样的,是基本思想

三要素:初始值,终止条件,步长

应用场景:树状结构,文件操作,图形结构

递归算法的特点:比普通算法更加消耗内存,谨慎使用,能用循环完成,就不用递归完成

面试题举例:

1.文件夹复制

2.斐波那契数列

常见异常:

 栈内存满了,装不下了

1.程序有问题,死循环

2.程序没问题,就是运存不够装不下了

递归案例

 

 

 

 

 *

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值