java的对象内存和数据类型
一、三种情况的对象内存图
(1)Java内存分配介绍:#
-
栈:
-
队:
-
方法区(jdk7):加载字节码文件、(从jdk8开始取消方法区,新增元空间,把原来方法区的多种功能进行拆分,有的功能放到堆中,有的功能放到元空间中)
-
本地方法区:
-
寄存器:
(2)一个对象的内存图#
Student s = new Student();
-
加载class文件:把student类的字节码文件加载到方法区
-
声明局部变量:对s进行声明
-
在堆内存中开辟一个空间:new关键字在堆里面开辟一个空间,这个空间就是对象(放在一个地址值中)
-
默认初始化:对第3部进行赋值
-
显示初始化:对第3部进行赋值
-
构造方法初始化:对第3部进行赋值
-
将堆内存中的地址值赋值给左边的局部变量
eg:#
study执行后出栈,main方法执行完毕出栈,main里面的变量也会消失,mian里面的指向也会消失,当main没有任何东西指向堆内存的时候,堆内存存储的变量和相应的值也会消失变成垃圾
(3)多个对象的内存图#
注意:s1和s2两个空间互相独立,不会相互影响。s1.study和s2.study调用完毕后会进行出栈处理,main方法执行完毕出栈,s1和s2没有任何东西调用堆内存会消变成垃圾
(4)两个引用变量指向同一个对象内存图:#
stu1被stu2覆盖,相应的值也会发生改变
此时堆内存没有任何东西指向,堆内存里面的变量声明消失,然后买呢方法执行完毕进行出栈
二、基本数据类型和引用数据类型
(1)基本数据类型:在变量中存储的是真实的数据的值#
-
整数类型
-
浮点数类型
-
布尔类型
-
字符类型
(2)引用数据类型:在代码当中创建的任意对象和数组都是引用数据类型#
引用数据类型:使用其他空间的数据
eg1:#
eg2:#
总结:#
1. 基本数据类型:
数据值存储在自己的空间中
特点:赋值给其他变量也是赋的真实的值
2.引用数据类型:#
数据值是存储在其他空间中,自己空间中存储的是地址值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App