Java 面向对象 06 对象内存图(黑马)

  

之前设计的如下图:

方法区和内存在物理上是一块的,但是有不好的地方,所以变成了这种形式:

一个对象的内存图:

在创建对象时虚拟机至少做了以下七步:

解释:

第一步:

第二步:

1、加载class文件

2、声明局部变量:

3、在堆中开辟一个空间

4、默认初始化

5、显示初始化

如果代码这样写的,则显式初始化就是在默认初始值的时候null和0就会被张三和23所覆盖

但是这样写:并没有赋值,则显示初始化可以忽略

6、构造方法初始化

此时写的是无参构造,而且空参构造中也没有写代码,,则构造初始化可以忽略

但是如果代码是有参构造,则name和age就会有值

7、

s也可以通过001找到空间的地址

第三步:

第四步:

第五步:

第六步:

当study方法执行结束后就从栈退出,整个main方法也执行完毕退出栈,创建的变量也消失了,则没有变量指向了堆里面的空间,这个空间也会消失。

两个对象的内存图:

与一个对象的内存图一样,但是需要注意的是,.class文件不需要再加载一次

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

出现空指针异常

将stu1=null注释后,下一行代码stu2是指向001的,所以下一行代码仍可以输出阿珍

此时stu2指向的001也断开了,此时堆里面的空间没有变量指向,就会变成垃圾,栈内方法也会退出:

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

this内存原理:

举例1、


举例2、

接下来调用set方法去赋值:

setName进栈

将竹小玲赋值给001里面的name

执行完之后,可出栈,再去执行第二个:

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

形参也是局部变量,下图所指的方法声明上就是指的形参:

 

  

全局变量和成员变量不是一个东西。

全局变量是在整个程序中都可见和访问的变量,它在程序开始执行时被创建,在程序结束时被销毁。全局变量可以在任何函数或方法中使用。

成员变量是在类中声明的变量,它属于类的实例(对象),每个对象都有自己的一份成员变量,它在对象创建时被创建,在对象销毁时被销毁。成员变量只能在类的方法中使用。

因此,全局变量是在整个程序中都可见和访问的变量,而成员变量是属于类的实例(对象)的变量。

全局变量存储在程序的全局数据区中。在程序运行时,全局变量的内存空间会被分配在全局数据区,并且在整个程序的执行过程中都可以使用。全局数据区在程序加载到内存中时就被分配好,并且在程序结束时被释放。全局变量的作用域是整个程序,可以在任何函数或代码块中访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/421797.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【笔记】Blender4.0建模入门-3物体的基本操作

Blender入门 ——邵发 3.1 物体的移动 演示: 1、选中一个物体 2、选中移动工具 3、移动 - 沿坐标轴移动 - 在坐标平面内移动 - 自由移动(不好控制) 选中物体:右上的大纲窗口,点击物体名称,物体的轮…

【C++提高编程(二)】

一、STL初识 1.1、STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西 C的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 为了建立数据结构和算法的一套标…

扫码开始聊天,使用 Chatopera 机器人聊天码

如何快速的让消费者与聊天机器人对话,在客户服务中,提升自动化业务流程? 在线下,最好的方式莫过于消费者可以扫码,然后立即与聊天机器人对话。Chatopera 机器人聊天码,就是用来满足这一需求的。 作为 Chat…

计算机网络——运输层(2)暨小程送书

计算机网络——运输层(2)暨小程送书 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 运输层(2)TCP/IP对比TCP(传输控制协议):IP(互联网协议):总结 拥塞…

【SpringCloud Alibaba】 介绍及微服务模块搭建

文章目录 SpringCloud Alibaba 介绍主要功能组件 微服务环境搭建案例准备技术选型模块设计微服务调用 创建父工程创建基础模块1、创建 shop-common 模块2、创建实体类 创建用户微服务1、创建pom.xml2、编写主类3、创建配置文件 创建商品微服务1、创建一个名为 shop-product 的模…

第4章-IP基本原理

目录 1. IP协议概述 1.1. 定义 1.2. 功能 1.3. IP网络的结构 1.4. IP头格式 2. IP地址和地址映射 3. IP包转发 4. 其他相关协议介绍 1. IP协议概述 1.1. 定义 IP协议:IP协议是网际互连协议; 工作层次:网络层; 封装&#…

空调网关BL121AC 实现工业空调设备与OPC UA系统高效通信

随着工业4.0的迅猛发展,人们深刻认识到在工业生产和生活中,实时、可靠、安全的数据传输至关重要。在此背景下,高性能的工业电力数据传输解决方案——协议转换网关应运而生,广泛应用于工业自动化和数字化工厂应用环境中。 钡铼技术…

本地git切换地区后,无法使用ssh访问github 22端口解决方案

问题 由于放假回家,发现之前一直使用正常的git,与github无法通讯,pull和push都无法连接。报错如下: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. 原因 可能是所…

SSL证书免费和付费的有什么区别?

品牌和信任度 免费SSL证书通常由非营利性的组织提供,而付费SSL证书则由知名的证书颁发机构(CA)提供,如DigiCert、GlobalSign、GeoTrust等。相较于免费证书,付费证书的品牌和信任度更高,更容易获得用户的信…

C语言第五弹---分支语句(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 分支语句 1、if语句1.1、if1.2、 else1.3、 分支中包含多条语句1.4、嵌套if1.5、 悬空else问题 2、关系操作符3、 条件操作符总结 C语言是结构化的程序设计语言&…

【C++】类和对象(上篇)

文章目录 🛟一、面向过程和面向对象初步认识🛟二、类的引入🛟三、类的定义📝1、类的两种定义方式📝2、成员变量命名规则的建议 🛟四、类的访问限定符及封装🍩1、访问限定符🍩2、封装…

【EI会议征稿通知】2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024)

2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024) 2024 4th International Conference on Digital Signal and Computer Communications 第四届数字信号与计算机通信国际会议(DSCC 2024)将于2024年4月12日至14日在中国-香港举行。DSCC 2024旨…