Day_05_方法重载、内存划分、递归

1.方法重载

        定义:方法名相同,参数列表不同

参数列表可以分为数据类型不同和数据个数不同

相同功能,相同名字,只需要不同的参数就可以

2.内存划分

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

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

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

2.1 java的内存划分和管理

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

2.1.1静态区 

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

2.1.2  VM栈 

        又叫栈内存 , 用来执行方法,是以栈数据结构为模型创建的一段空间 : 遵循先进后出原则

        栈空间 : 就是栈内存,就是以栈数据结构为模型创建的内存空间,叫栈空间

        栈帧 : 栈空间中的元素,就是栈帧,比如 弹夹是栈空间的话,子弹就是栈帧

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

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

2.1.2.1   栈操作 :

        压栈 : 就是指向栈空间中添加栈帧的过程,就是把子弹放到弹夹中,叫压栈

        弹栈 : 就是指把栈帧在栈空间中弹出的过程

2.1.3程序计数器 

        是一块比较小的内存,字节码位置的指示器,比如当前执行到第几行了之类,分支,循环,跳转等

2.1.4本地方法栈

        用来执行本地方法,和栈内存一样, 使用 native 修饰的方法, 和我们没关系

2.1.5堆内存

        用来保存对象

3.程序的执行流程 

1 javac编译 生成class文件

2 java命令 运行

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

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

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

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

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

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

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

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

4.递归

递归的定义:在一个方法中,调用自己(我调我自己)

递归的基本思想:递归等价于迭代(循环)

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

应用场景:一般树状结构都可以使用递归   例如:文件夹复制,斐波那契额数列,汉诺塔

4.1常见异常

 

意思是栈内存溢出,爆内存

有两种可能:1 程序有问题,导致死循环了

                      2 程序没问题,就是装不下了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值