static修饰成员的特点及static修饰成员变量内存图解-java se进阶 day01

news/2024/12/21 11:29:41/文章来源:https://www.cnblogs.com/zhishi6/p/18620577

1.static介绍

static是静态的意思,它可以用于修饰成员变量和成员方法

2.static的特点

1.被static修饰了的成员变量,可以被类中的所有对象所共享

虽然stu02没有给school赋值,但是我们用stu02调用时依旧成立,并且打印了南昌交通学院,因为school被共享了,恰好stu01又为其赋值了

2.被static修饰的成员变量,可以通过类名进行调用

上图中,stu01调用school出现了警告,正是因为我们没有通过类名调用

推荐使用类名调用被static修饰的成员变量!


3.随着类的加载而加载,优先于对象存在

在对象还未创建前,被static修饰的成员变量就已经存在了,也就意味着可以调用

3.static修饰成员变量的使用场景和内存图解

1.何时才要使用static修饰成员变量呢?

答:当数据要被共享时,就可以使用static。

比如在为一个学校专门制作项目时,所有的学生都是该学校的,这时就可以使用static修饰学校进行共享

或者和同事一起制作项目,在登录人数上要进行共享,当同事登录时,登录人数要在我们的电脑上加一,而我们退出时,登录人数也要随之减一

2.内存图解

Static Test1、main先存入方法区,main方法自动进栈

往下执行碰到user.onlineNumber(登录人数)做了一个++的操作,static第三个特点的前半段就显现了,被static修饰的成员变量随着类的创建而创建,当User进入方法区后,onlineNumber也会随之加载进堆内存,初始值为0,但是自加后变为1

接着往下走,创建u1对象,有new进堆,产生地址,为其赋值,将地址交给u1

走完上一步,还没那么快走下一步,User对象与User类的内存空间存在联系,u1对应的对象空间可以找到User类的空间

这时,打印,u1根据地址找到对象空间,然后对象空间又可以找到类空间,将其全部打印
.
继续往下走,onlineNumber再次加1,然后创建u2对象,有new进堆,产生地址和空间,赋值后,对象空间找到类空间,这时就体现了被static修饰的成员变量会被类中的对象共享这一特点,最后把地址给u2,打印

完整流程:https://kdocs.cn/l/cgeGmWGWPAb1?linkname=150996254

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

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

相关文章

IIS运行遇到问题

1:打开网站时出现的错误提示2:下载对应的.net core Runtime后正常,如下图所示

【最短路】

【最短路算法系统概述】

【Python逆向】深入Pyd逆向

pyd 文件是编译生成的 Python 扩展模块,是类似 so、dll 的一种 Python 文件。 pyd 文件无法像 pyc文件那样恢复源码,只能通过逆向手段去恢复逻辑。 一、理解pyd文件 1.1 编译pyd 自己编译一个 pyd 保留符号来看。 test.py: import base64 key = [ord(i) for i in "key&…

React之Json编辑器

我们先看下效果,这个白色是不是非常不错?没有太多复杂的功能,就是当一个简洁显示json并且进行编辑的功能接下来是代码部分 import AceEditor from react-ace; import { Button, Modal } from antd; import ./styles.css;// Import ace editor themes and modes import ace-b…

2024 ASP.NET Core 开发者路线图

2024 ASP.NET Core 开发者路线图

OCR实践—PaddleOCR

有个项目需求,对拍摄的问卷图片,进行自动得分统计【得分是在相应的分数下面打对号】,输出到excel文件 原始问卷文件见下图,真实的图片因使用手机拍摄的图片,存在一定的畸变,技术调研 传统方法 传统方法,通过线检测 先对 表格进行矫正【仿射变换】,然后二次线检测 划分出…

Google发布了它所称的“推理”AI模型

Google发布了它所称的“推理”AI模型——但这还处于实验阶段,根据我们简短的测试,显然仍有改进空间。 这个新模型名为Gemini 2.0 Flash Thinking Experimental(名字有点长,确实),可以在Google的AI原型平台AI Studio中使用。模型卡片描述它是“最适合多模态理解、推理和编…

【Python GUI 编程】tkinter :Ttk 组合框 Combobox

在本文中,将介绍如何创建一个 tkinter Combobox 组合框小部件,该小部件允许用户从一组值中选择一个值。 Combobox 组合框小部件是新增的 Ttk 主题小部件,是 Entry 文本框和 Listbox 列表框的组合。除了允许在一组值中选择一个值外,它还允许输入自定义值。 创建组合框 要创建…

【Python GUI 编程】tkinter:Ttk 选项卡 Notebook

在本文中,将介绍如何使用 Tkinter Notebook 小部件创建选项卡。 Notebook 是由 Tkinter Ttk 模块引入的强大小部件。允许开发者创建包含多个选项卡的界面,每个选项卡可以包含不同的内容。 创建 Notebook 小部件,请使用如下构造函数: notebook = ttk.Notebook(master,**kw)添…

在虚拟机里执行protoc报非法指令( Illegal instruction)

问题 在x86虚拟机里编译perfetto的时候遇到执行protoc报非法指令,但是在host上编译的时候并没有这样的问题 原因 虽然虚拟机和宿主机都是同一个指令集架构,但是CPU在一些特殊指令上的支持还是有区别的,如果Host可以,但是虚拟机上不行,可能就是虚拟机CPU不支持某些特性,导…

中考阅读理解深入逻辑分析-001 A Dine to Remember 难忘的一餐

中考阅读理解深入逻辑分析-001 A Dine to Remember 难忘的一餐 文章正文 It was a few years ago. A friend had sent me a restaurant gift card for Christmas and I had picked a sunny Sunday afternoon to use it. It felt good taking my two grown sons and daughter to…

HTTP协议及安全防范

HTTP(Hypertext Transfer Protocol)超文本传输协议是一个用于 Web 应用程序通信的应用层协议。它是一种客户端-服务器协议,客户端通过发送请求到服务器来获取资源,服务器则根据请求返回响应。HTTP 协议通常使用 TCP作为传输协议,但也可以使用其它传输协议 由于图片解析问题…