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

news2024/9/30 3:25:11

  

之前设计的如下图:

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

一个对象的内存图:

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

解释:

第一步:

第二步:

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.coloradmin.cn/o/1403087.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频格式转换软件,无忧转换畅享愉悦

在这个视频无处不在的时代,一款好的视频格式转换工具显得尤为重要。它不仅解决了你的燃眉之急,更让你畅享快速转换和简单操作带来的愉悦体验。现在就加入我们,开启全新的视频转换之旅吧! 所需工具: 一个【媒体梦工厂…

【Leetcode】2788. 按分隔符拆分字符串

文章目录 题目思路代码 题目 题目链接 给你一个字符串数组 words 和一个字符 separator ,请你按 separator 拆分 words 中的每个字符串。 返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串 。 注意 separator 用于决定拆分发生的位置&#…

一区优化直接写:KOA-CNN-BiLSTM-Attention开普勒优化卷积、长短期记忆网络融合注意力机制的多变量回归预测程序!

适用平台:Matlab 2023版及以上 KOA开普勒优化算法,于2023年5月发表在SCI、中科院1区Top顶级期刊《Knowledge-Based Systems》上。 该算法提出时间很短,目前还没有套用这个算法的文献。 同样的,我们利用该新鲜出炉的算法对我们的…

Pandas--简介(1)

Pandas 简介 Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。Pandas 是数据科学和…

Spring boot项目java bean和xml互转

Spring boot项目实现java bean和xml互转 项目场景:互转方法使用jackson进行互转使用jaxws进行xml与bean的互转 搞定收工! 项目场景: 工作中需要给下游第三方收费系统做数据挡板,由于下游系统使用的是soap webservice,里面涉及各种…

UE5 C++学习笔记 常用宏的再次理解

1.随意创建一个类,他都有UCLASS()。GENERATED_BODY()这样的默认的宏。 UCLASS() 告知虚幻引擎生成类的反射数据。类必须派生自UObject. (告诉引擎我是从远古大帝UObject中,继承而来,我们是一家人,只是我进化了其他功能…

【C++修行之道】竞赛常用库函数(sort,min和max函数,min_element和max_element、nth_element)

目录 一、sort 1.1sort简介 语法 参数 功能 适用容器 1.2sort的用法 1.3自定义比较函数 示例 1265蓝桥题 —— 排序 二、min和max函数 三、min_element和max_element 497蓝桥题 —— 成绩分析 四、nth_element 一、sort 1.1sort简介 sort函数包含在头文件<a…

如何在WordPress中使用 AI 进行 SEO(12 个工具)

您想在 WordPress 中使用 AI 进行 SEO 吗&#xff1f; 人工智能正在对 SEO 行业产生重大影响。已经有优秀的人工智能 SEO 工具&#xff0c;您可以使用它们来提高您的 SEO 排名&#xff0c;而无需付出太多努力。 在本文中&#xff0c;我们将向您展示如何通过我们精心挑选的工具…

Qt 开发环境配置 vs和Qt creator

Qt 开发环境配置 vs和Qt creator 1、安装的软件 1、vs_Enterprise.exe 2、Qt creator (最好是最新的版本,低版本不支持vs2019) 下载地址&#xff1a;https://gofile-3535697530.cn1.quickconnect.cn/sharing/zMCh5ENgZ 密码&#xff1a;qt_dev 2、Qt Creator配置 1、打开…

检索增强生成中的创新

每日推荐一篇专注于解决实际问题的外文,精准翻译并深入解读其要点,助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号(NLP Research),及时查看最新内容 原文标题:Innovations In Retrieval Augmented Generation 原文地址:https://medium.com/emalpha/innov…

springsecurity集成kaptcha功能

前端代码 本次采用简单的html静态页面作为演示&#xff0c;也可结合vue前后端分离开发&#xff0c;复制就可运行测试 项目目录 登录界面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</…

x-cmd pkg | speedtest-cli - 网络速度测试工具

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 speedtest-cli 是一个网络速度测试工具&#xff0c;用于测试计算机或服务器与速度测试服务器之间的网络连接速度。 它使用 speedtest.net 测试互联网带宽&#xff0c;可以帮助用户获取网络的上传和下载速度、延迟等参…

Java项目:ssm框架基于spring+springmvc+mybatis框架的民宿预订管理系统设计与实现(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm827基于SSM框架的民宿预订管理系统设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调…

stm32内存分配博客笔记

原文&#xff1a; stm32内存分配 笔记&#xff1a; 1、向量表与代码段&#xff1b;根据Cortex-M3权威指南描述&#xff0c;系统复位后&#xff0c;在向量表异常0处保存的是堆栈起始地址&#xff0c;而后紧跟中断向量表 2、可以从链接脚本.ld文件中看到终端向量表第一个被链接…

品牌百度百科词条怎么写?

在互联网时代&#xff0c;品牌的影响力愈发重要&#xff0c;而百度百科作为我国最大的百科全书&#xff0c;更是塑造品牌形象、传播品牌价值的重要平台。如何撰写一篇高质量的百度百科品牌词条&#xff0c;成为了众多企业和品牌关注的焦点。品牌百度百科词条怎么写&#xff1f;…

QGraphicsView前有QWidget遮罩,导致QGraphicsItem鼠标事件不响应

场景&#xff1a;在一个QWidget上放置了一个QGraphicsView用于显示图像&#xff0c;QGraphicsView设置了场景&#xff0c;并添加了一个自定义QGraphicsItem。由于需求原因&#xff0c;又绘制了一个标尺QWidget放在QGraphicsView前部。 结果导致标尺QWidget显示时&#xff0c;重…

系统IO

OS&#xff1a;操作系统 管理和分配硬件资源的系统软件&#xff0c;现代操作系统必须提供并发功能 介于应用与硬件之间的 在linux下做应用开发&#xff0c;其实就是调用操作系统提供的API函数的接口操作硬件 一、文件IO是什么&#xff1f; 文件IO分为系统IO和标…

代码随想录 Leetcode150. 逆波兰表达式求值

题目&#xff1a; 代码(首刷看解析 2024年1月21日&#xff09;&#xff1a; class Solution { public:int evalRPN(vector<string>& tokens) {stack<long long> st; for (int i 0; i < tokens.size(); i) {if (tokens[i] "" || tokens[i] &qu…

WSL2 git clone命令无法克隆远程仓库

问题描述 最近在往WSL2里拉取git仓库的时候&#xff0c;突然出现了这个问题&#xff0c;WSL2无法连接到git服务器&#xff0c;导致代码无法拉取下来&#xff0c;可能是因为我最近不小心修改了windows的防火墙设置&#xff0c;导致出现了这个问题。 解决办法 在查阅了很多篇…

浅析智能家居企业面临的组网问题及解决方案

在这个快速发展的时代&#xff0c;组网对于企业的发展来说是一个至关重要的环节。 案例背景&#xff1a; 案例企业是一家智能家居制造企业&#xff0c;在不同城市分布有分公司、店铺、工厂&#xff0c;这些点原本都是各自采购网络&#xff0c;与总部进行日常沟通、访问。 现在…