Day 03 方法 内存 递归

3.1 形参和实参

1:形参:方法定义中的参数 等同于变量定义格式 ,例如 : int number

2: 实参: 方法调用中的参数 等同于使用变量或常量,例如 10 number

3.2: 带参数方法练习(应用)

3.3 带返回值方法定义和调用

定义格式

public static 数据类型 方法名 (参数){
   return 数据; 
}

范例

public static boolean isEvenNumber(int number){
       return turn ;
}
public static int getMax(int a, int b){
       return 100;
}

注意:方法定义时 return 后面的返回值与方法定义上的数据类型要匹配。否则程序将报错

调用格式:

方法名(参数)

数据类型 变量名 = 方法名 (参数);

范例

isEvenNumber(5);

boolean flag = isEvenNumber(5);

注意:方法的返回值通常会使用变量接收,否则该返回值将无意义。

应用:

 

 3.4 方法的重载

重载:指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

多个方法在同一个类中   多个方法具有相同的方法名  多个方法的参数不相同 ,类型不同或者数量不同。

 

 

注意:

重载仅对应方法的对应

3.4 : 内存划分

Java Runtime Data Area :java 运行时区域,一般叫jvm内存。

程序计数器:一块较小的内存区域,作用可以看作是当前程序执行的位置指示器

静态区: 保存程序文件(class 文件)以及静态数据,方法被调用之前,也保存在静态区,内部还有运行时常量池。

VM 栈: 又叫栈内存: 栈内存是以栈数据结构为模型开辟的的一段空间,特性是先进后出,

栈: 是一种数据结构,先进后出,像弹夹。

栈的构成因素:

栈空间:栈内存

栈帧:栈空间中的每一个栈元素,就叫栈帧(比如,弹夹中的每一个子弹就叫栈帧)

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

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

栈操作:

压栈:就是指把元素放入栈空间的过程

弹栈:就是把元素弹出去的过程

栈内存:是用来执行方法的,所有方法的执行,必须在栈内存进行

本地方法栈:用来执行做一些本地方法:hashCode等,模型和操作都和vm栈一致

堆内存:用来保存对象

3.5 运行机制:

1Java程序编写

2javac编译,得到class文件

3java命令,运行

     3.1开启jvm,把运行的程序载入内存,把class文件保存到静态区

     3.2加载完之后,jvm自动调运程序中的main方法

     3.3在栈内存开辟栈帧,用来执行main方法

          如果main方法中,没有其他方法调用,则运行完,弹栈,销毁。结束,jvm关闭

          如果main方法中,有其他方法调用,再在main方法之上再开辟一个栈帧,用来执行新的方法,一次类推, 但是,如果调用的方法是别的类中的方法,则需要把对应的类先加载进来

方法调用: 就等于压栈操作

方法执行完成:就等于是弹栈操作

加载,静态加载,之程序开始运行,就把相关的所有文件全部一次性载入内存

           动态加载,程序运行开始,只载入核心文件,当用到其他文件的时候,再去加载

Java中采用动态加载机制

 

 

3.6 递归 :方法中调用当前方法

递归思想:

   递归和迭代时等价的,就是循环

   基本思想就依次类推

应用场景 :

   循环能做的,递归都能做,但是这种情况,优先使用循环,因为递归非常消耗内存,运行效率低,但是,像树状结构之类的,循环时没法做的,只能通过递归来搞定

常见的问题:

所有树状结构,文件夹复制,斐波那契数列

难点:不容易理解,递归思想  画图,栈帧调用图

注意,必须有终止条件,否则就等于死循环一样,导致一直压栈不会弹栈而出现的栈内存溢出问题

 

 

应用举例:

递归求和

斐波那契数列

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值