栈和堆的理解

1、栈和堆

1、概述

JVM内存模型图(自己画的草图)

1683643772223

运行java文件执行顺序图

1683642056107

栈、堆都是在JVM内存控件中的一个内存区,JVM是电脑内存中分出来的一部分内存

2、栈、堆的存储对象

package com.wuzhy.opp.JVM;

public class Test {
    public static void main(String[] args) {
        /**
         * main方法是程序的入口
         * 在方法中添加局部变量后,JVM运行完方法后,则会自动回收栈内存中的内容,堆则不会
         * 栈存储基本类型变量时,是变量=值,存储引用变量时,是变量=堆的地址
         * 堆存储引用变量的值
         */
        //存储在栈中是a=1
        int a=1;
        //存储在栈中是a=0X001,堆中存储的是 0X001=1
        Integer b=new Integer(1);

        /**
         * 当使用==对比时,会发现基本类型对比的是值,而引用类型对比的都是堆的存储地址,因为我们在栈内存中获取的对象是这样的
         * 当equals时,如果你使用的引用类型对象使用的equals里面是重写的方法的话,那么经过里面的方法处理后,引用类型对比的也是值
         * 一般自己写的class对象没有重写过equals,那仍然对比的是地址,就永远都不会是true
         */
        //基本类型
        int c=1;
        int d=1;
        System.out.println(c == d);

        //每new一个变量都会在栈、堆中新增一个对象
        String str=new String("你好");
        String string=new String("你好");
        System.out.println(str==string);//false
        System.out.println(str.equals(string));//true.

        //自己写的class对象
        Teacher teacher1=new Teacher();
        Teacher teacher2=new Teacher();
        System.out.println(teacher1.equals(teacher2));//false
        System.out.println(teacher1==teacher2);//false
    }


}
     class  Teacher{

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值