2021-09-28-方法重载-内存划分-递归

本文详细介绍了Java内存的五大部分:静态区/方法区、VM栈、堆内存、程序计数器和本地方法栈,以及它们各自的功能。同时,讲解了程序从编译到运行的过程,并阐述了方法重载的概念。此外,还探讨了递归的基本思想及其在解决问题中的应用,指出递归虽强大但可能导致较高的内存消耗,因此在使用时需谨慎。
摘要由CSDN通过智能技术生成

方法重载:方法名相同,参数列表不同(参数列表不同分为两种:1.类型不同2.个数不同)
—相同功能,相同名字,通过不同的参数区分,比较美观,容易记忆,相同功能只需要记住一个方法即可

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

	进程:就是正在执行的程序,是个动态概念,保存在运行内存中,会按照该程序的设计在内存中一步步执行
		
	运行中的程序,也就是指载入到内存中的可执行文件,操作系统会开启一个进程,用来保存这个运行的这个文件.如果想要关闭某个程序只需要在内存中把该进程杀死即可

	java的内存划分和管理
			javaRuntime  Data Area---java运行数据区域一般叫jvm内存
			
		分为五大块
				1.静态区/方法区 		2.vm栈    3.堆内存		4.程序计数器	5.本地方法栈
				程序计数器:是一块比较小的内存,字节码位置的指示器,比如当前执行到第几行之类,分支,循环,跳转等
				
				静态区:用来保存我们的程序文件(class),载入到内存之后的class文件保存在静态区,还有一些静态资源.另外方			  		法被调用之前,也保存在静态区,还有常量池

			vm栈:又叫占内存,用来执行方法
				是以数据结构为模型创建的一段空间,先进后出,类似于弹夹
				栈空间:就是占内存,就是栈数据结构创建的内存空间,叫栈空间
				栈帧:栈空间中的元素就是栈帧,比如弹夹是栈空间的话,子弹就是栈帧
				栈底元素:第一个放进去的元素
				栈顶元素:最后一个放进去的元素
		栈操作:
				压栈:就是向栈空间中添加栈帧的过程,就是把子弹放进弹夹,叫压栈
				弹栈:就是把栈帧在栈空间中弹出的过程
	
			本地方法栈:用来执行本地方法,和占内存一样,使用native修饰的方法,和我们没关系

		堆内存:用来保存对象

执行流程:

	1.javac编译,生成class文件
	2.java命令运行
		2.1开启java虚拟机,然后把对应的class文件载入到内存中的静态区
		2.2载入之后,jvm自动调用该程序中的main方法,并在栈内存中开辟main方法栈帧,开始执行
		2.3如果main方法中没有其他方法调用,执行完结束,销毁即可
		2.4如果main方法中有其他类的调用,如果是其他类中的方法,则把对应的类也加载到静态区,然后调用该方法
		2.5如果是当前类的方法,直接在栈内存继续压栈即可
		2.6如果被调用的方法中还有其他方法调用的话,步骤同上
		2.7一直到最后一个压栈的方法执行完,弹栈然后再依次返回调用处继续执行
		2.8一直到main方法执行完,弹栈,程序销毁

递归

	递归:在方法体中,调用当前的方法(自己调用自己)
	递归的基本思想:递归和迭代是等价的(迭代就是循环)
应用场景:一般树状结构都可以使用递归操作
		比如查询地区,树状菜单,文件目录等
		递归方法比较消耗内存,非必要情况下不使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值