当前位置: 首页 > news >正文

Java基础-面向对象复习知识5

一、对象的内存图

1.1 Java内存分配介绍

每一个软件都会占用一块内存区域,虚拟机也会占用一块空间,只不过为了更好的利用这个内存,提供效率,我们把这块内存分了很多的空间。

在JDG7之前,方法区和堆空间是连在一起的,在真实的物理空间上也是连续的一块空间。但是有某些方面存在缺陷不足,后续补充。JDK8之后取消了这种模式。

1.2 一个对象的内存图

创建一个对象的时候,会进行如下的操作:

举例:

语句1:首先程序从main()方法开始执行,会把.class的字节码文件加载到方法区中,这里就会对main()方法进行临时存储。

语句2:

虚拟机此时就会自动的调用main()方法。所以此时main()方法就会被调用到栈内存中,然后执行后续代码。

然后就会执行main()方法中的第一条语句:Student s =new Student();

会至少执行7条步骤:

①加载Student.class到方法区临时存储,在这里面会有class定义的所有的变量和方法。

② 申明局部变量,在mian()方法中会开辟一块空间名称为s,能存储这个对象的地址值。

③ 在堆内存中开辟了一个空间,假设其地址值为001,那么它就会把Student.class中所有的成员变量拷贝一份过来,除此之外还会有成员方法的地址值,方便我们调用方法的时候能找到对象。

④ 默认初始化根据系统的设定。

⑤ 显式初始化,假如我们在写Student类文件的成员变量的时候默认赋值了初始值,比如name = “张三”,那么在这一步就会显示出来。那么则默认初始化不会覆盖。

⑥ 我们new Student()括号中什么都没有写,代表调用的是空参构造,空参构造中也没有写代码,此步骤也可以忽略。有参构造的话就会执行有参构造的调用。

⑦ 将堆内存中的地址001赋值给左边的局部变量。自此一个对象才创建完毕。

当这些话打印完毕之后,study方法就要出栈,当main()方法完成之后也会出栈,程序结束。系统将会自动清理剩余的残留数据。

1.3 两个对象的内存图

其实就是把一个对象的内存图的流程重复两次而已,不再详细赘述。

答案是不需要的,直接用就可以了。

1.4 两个引用指向同一个对象

原来开辟001地址空间会赋值给临时变量stu2,那么在对此进行赋值操作就会改变001空间的原有的数据。stu1和stu2实际上指向的同一块堆内存中的地址,指向的是同一个空间。

给stu1 = NULL,相当于将地址寻址的路径给截断,那么打印时编译器就找不到相应的数据。

1.5 基本数据类型和引用数据类型

以前我们只会记忆口诀如图,这其实是强行记忆,没有找到本质区别。

int a = 10;在内存中开辟了一块空间真实的存储了10数据。并没有去其他的内存空间,比如方法区啊找或者说引用数据,我们就称之为基本数据类型。

引用数据类型,就是对其他的内存空间中的变量和方法进行引用。

1.6 this内存原理

举个例子:

这里的method()方法是被s调用的(地址为001),而this也是001,第一个sout(age)前面没有this触发就近原则,就会打印10,打印sout(this.age)相当于获取001.age。

同理set()方法中也是这样,本质上是将参数中的字符串赋值给001.age,那么真是赋值到了右边的堆内存中空间去。

1.7 局部变量和成员变量的区别

除了这一点之外,还有五点区别,不需要强行记忆,了解即可:

声明:

以上均来源于B站@ITheima的教学内容!!!

本人跟着视频内容学习,整理知识引用。

http://www.dtcms.com/a/419939.html

相关文章:

  • GitHub 官宣 GitHub Copilot CLI 开发公测:AI CLI 大战
  • 哪些网站可以进行域名注册设计制作一个 个人主页网站
  • OSS-对象存储服务
  • cpa自己做网站高端品牌洗发水
  • 职业教育专业建设验收网站海南做网站的公司有哪些
  • 马云归来,“新零售”不死
  • 湖南省建设厅网站官网镇江网站制作案例
  • 哪些网站是做免费推广的wordpress函数手册 pdf
  • 网站网站做维护犯罪赣州酒店网站设计
  • 洛阳网站建设汉狮报价怎么查域名的注册人
  • 插座配线工程量-连续测量快速计量
  • 软考中级-软件设计师(七)
  • CDN 网站是否需要重新备案链爱交易平台
  • 高端网站建设大概多少费用商城网站建设哪个公司好
  • C++ 多返回值的几种实现方式
  • 徐州网站建设的特点做企业网站用什么
  • 东莞营销网站网站虚拟主机 会计处理
  • CSS定位布局
  • 织梦首饰网站模板茶楼 网站
  • 怎样建设微网站课程推广
  • 网站建设前的ER图重庆怎样网站推广
  • 虹膜边缘预测函数
  • day82—数组 | 哈希桶—找到所有数组中消失的数字(LeetCode-448)
  • 人该怎样活着呢?版本61
  • 天纪标注平台TLP:用大模型赋能高质量数据标注
  • 免费网站建设 百度收录wordpress怎么调用api
  • linux 系统cshrc 文件
  • 【网络安全】一、入门篇:读懂 HTTP 协议
  • 建设在线教育网站国外做的好的医疗网站设计
  • 酒店网站建设案例策划书怎么写网站设计是什么专业