【愚公系列】2022年10月 Java教学课程 23-对象内存和成员变量和局部变量

103 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

一、对象内存图

1.单个对象内存图【理解】

在这里插入图片描述

2.个对象内存图【理解】

在这里插入图片描述

  • 总结:

    多个对象在堆内存中,都有不同的内存划分,成员变量存储在各自的内存区域中,成员方法多个对象共用的一份

3.多个对象指向相同内存图【理解】

在这里插入图片描述

  • 总结 :

    当多个对象的引用指向同一个内存空间(变量所记录的地址值是一样的)

    只要有任何一个对象修改了内存中的数据,随后,无论使用哪一个对象进行数据获取,都是修改后的数据。

二、成员变量和局部变量

1.成员变量和局部变量的区别

  • 类中位置不同: 成员变量(类中方法外)局部变量(方法内部或方法声明上)
  • 内存中位置不同: 成员变量(堆内存)局部变量(栈内存)
  • 生命周期不同: 成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,醉着方法的调用完毕而消失)
  • 初始化值不同: 成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)

总结

对象内存和成员变量和局部变量和其他语言的全局变量和局部变量一样其实存在与内存的位置不同,而且有进程共享和非共享的差别。