Day-5

方法重载,内存划分,递归

1 方法

1.1方法重载

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

1.2 内存划分 

程序:可以执行的文件,是一对命令的集合,是静态概念,储存在硬盘里
     进程:正在执行中的程序,是动态概念,保存在运行内存之中,会按照该程序的设计在内存中一步步执行
      运行中的程序 也就是指载入到内存中的可执行文件,操作系统会开启一个进程,用来保存运行的这个文件
              如果想要关闭某个程序只需要在内存中把该进程杀死即可
      
      java的内存划分和管理
              Java Runtime Data Area : java运行时数据区域,一般叫JVM内存;
           分为五大块 : 
               1 静态区/方法区  2 VM栈 3 堆内存 4 程序计数器 5 本地方法栈
       
               程序计数器 : 是一块比较小的内存,字节码位置的指示器,比如当前执行到第几行了之类,分支,循环,跳转等
  
               静态区 : 用来保存我们的程序文件(class),载入到内存之后的class文件保存在静态区中,还有一些静态资源
     另外 方法被调用之前 也保存在静态区  , 还有常量池
          VM栈 : 又叫栈内存 , 用来执行方法
     是以栈数据结构为模型创建的一段空间 : 先进后出,类似于弹夹
     栈空间 : 就是栈内存,就是以栈数据结构为模型创建的内存空间,叫栈空间
                 栈帧 : 栈空间中的元素,就是栈帧,比如 弹夹是栈空间的话,子弹就是栈帧
                 栈底元素 : 第一个放进去的栈帧
                   栈顶元素  : 最后一个放进去的栈帧
     栈操作 : 
     压栈 : 就是指向栈空间中添加栈帧的过程,就是把子弹放到弹夹中,叫压栈
                   弹栈 : 就是指把栈帧在栈空间中弹出的过程
         本地方法栈 : 用来执行本地方法,和栈内存一样, 使用 native 修饰的方法, 和我们没关系
      
           堆内存 : 用来保存对象
       
      执行流程 : 
               1 javac编译 生成class文件
              2 java命令 运行 
                   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方法执行完,弹栈,程序销毁
     
     方法的调用,就等于是压栈操作
     方法调用结束,就是等于是弹栈操作
     静态加载:程序开始执行,首先把程序相关的类全部一次性载入
     动态加载:开始执行的时候,只加载必须的类,在执行的过程中,需要用到其他的类的时候,再去加载其他的类
     Java中采用的是动态加载

1.3 递归

                     递归
     *     递归:在方法体中,调动当前方法(自己调自己)
     * 
     * 递归的基本思想:递归和迭代是等价的(    迭代就是循环)以此类推是基本思想
     * 
     * 三要素:初始值;终止条件;步长
     * 
     * 应用的场景:   一般树状型结构都可以用递归;
     * 
     * 递归的算法比普通算法更加耗内存,谨慎使用 

 递归 案例

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值