text4内存划分、递归

1.内存划分

java在运行时,内存划分和管理

java runtime data area : java运行时数据区域,又叫JVM内存

静态区/方法区 : 用来存放一些静态资源文件,例如class文件,方法调用之前也是保存在这里的

VM栈 : 也叫栈内存,用于执行方法的

栈内存 是以栈数据结构为模型,开辟的一段内存空间

栈数据结构 : 先进后出,比如弹夹

栈的构成 栈空间 : 是一个以栈数据结构为模型开辟的一段内存空间(弹夹)

栈帧 : 栈内存中,每一个栈元素就叫栈帧(子弹)

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

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

栈操作 : 

压栈 : 就是指把元素放到栈空间中的过程(装弹)

弹栈 : 就是指把元素从栈空间中弹出的过程(开枪)

方法在栈内存中执行,就意味着,调用方法,会在栈内存中进行压栈

方法执行完成,就意味着,在栈内存中进行弹栈

本地方法栈:和栈内存一样,用于执行本地方法,比如hashCode等

堆内存 : 用来保存对象相关数据的

2.递归


    public static void main(String[] args) {
    int n = 100;
    int result = sum(n);
    System.out.println(result);
    result = sum1(3);
    System.out.println(result);
    }

    public static int sum1(int n) {
    if (n == 1) {
    return 1;
    } else {
    return n + sum1(n - 1);
    // return 5 + sum1(4); n = 5
    }
    }

    // 需求 : 计算1~N的累加加和
    public static int sum(int n) {
    int sum = 0;
    for (int i = 1; i <= n; i++) {
    sum += i;
    }
    return sum;
    }

    // 由于没有终止条件,一直进行压栈,导致栈内存移出
    // Exception in thread "main" java.lang.StackOverflowError
    public static void m1() {
    m1();
    }
2.1斐波那契数列

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值