Java中的内存划分,一个数组的内存图,两个数组的内存图,两个引用指向同一个数组的内存图

news2024/10/6 8:30:38

1、Java中的内存划分

Java的内存需要分成5个部分:

栈(Stack)

存放的都是 方法 中的 局部变量方法的运行一定要在栈当中运行。

局部变量:方法的参数,或者是方法{}内部的变量

作用域:一旦超出作用域,立刻从栈内存当消失。

堆(Heap)

凡是 new 出来的东西,都在堆当中。

堆内存里面的东西都是一个地址值:16进制

堆内存里面的数据,都有默认值。规则:

如果是整数        默认为0

如果是浮点数     默认为0.0

如果是字符         默认为'\u0000'

如果是布尔         默认为false

如果是引用类型  默认为null

方法区(Method Area)存储.class相关信息,包含方法的信息。

本地方法栈

(Native Method Stack)

与操作系统相关。
寄存器(pc Register)与CPU相关。

 2、一个数组的内存图

public class Demo01ArrayOne {
    public static void main(String[] args) {
        int[] array = new int[3]; //动态初始化
        System.out.println(array); //地址值
        System.out.println(array[0]); //0
        System.out.println(array[1]); //0
        System.out.println(array[2]); //0
        System.out.println("=================");

        //改变数组当中元素的内容
        array[1] = 10;
        array[2] = 20;
        System.out.println(array); //地址值
        System.out.println(array[0]); //0
        System.out.println(array[1]); //10
        System.out.println(array[2]); //20
    }
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar=3614:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\variableandoperator Demo01ArrayOne
[I@776ec8df
0
0
0
=================
[I@776ec8df
0
10
20

Process finished with exit code 0
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 3、两个数组的内存图

public class Demo02ArrayOne {
    public static void main(String[] args) {
        int[] arrayA = new int[3];
        System.out.println(arrayA); //地址值
        System.out.println(arrayA[0]); //0
        System.out.println(arrayA[1]); //0
        System.out.println(arrayA[2]); //0
        System.out.println("=================");
        arrayA[1] = 10;
        arrayA[2] = 20;
        System.out.println(arrayA); //地址值
        System.out.println(arrayA[0]); //0
        System.out.println(arrayA[1]); //10
        System.out.println(arrayA[2]); //20

        int[] arrayB = new int[3];
        System.out.println(arrayB); //地址值
        System.out.println(arrayB[0]); //0
        System.out.println(arrayB[1]); //0
        System.out.println(arrayB[2]); //0
        System.out.println("=================");
        arrayB[1] = 100;
        arrayB[2] = 200;
        System.out.println(arrayB); //地址值
        System.out.println(arrayB[0]); //0
        System.out.println(arrayB[1]); //100
        System.out.println(arrayB[2]); //200
    }
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar=4940:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\variableandoperator Demo02ArrayOne
[I@776ec8df
0
0
0
=================
[I@776ec8df
0
10
20
[I@4eec7777
0
0
0
=================
[I@4eec7777
0
100
200

Process finished with exit code 0

 

 4、两个引用指向同一个数组的内存图

public class Demo03ArraySame {
    public static void main(String[] args) {
        int[] arrayA = new int[3];
        System.out.println(arrayA); //地址值
        System.out.println(arrayA[0]); //0
        System.out.println(arrayA[1]); //0
        System.out.println(arrayA[2]); //0
        System.out.println("=================");
        arrayA[1] = 10;
        arrayA[2] = 20;
        System.out.println(arrayA); //地址值
        System.out.println(arrayA[0]); //0
        System.out.println(arrayA[1]); //10
        System.out.println(arrayA[2]); //20

        int[] arrayB = arrayA;
        System.out.println(arrayB); //地址值
        System.out.println(arrayB[0]); //0
        System.out.println(arrayB[1]); //10
        System.out.println(arrayB[2]); //20
        System.out.println("=================");
        arrayB[1] = 100;
        arrayB[2] = 200;
        System.out.println(arrayB); //地址值
        System.out.println(arrayB[0]); //0
        System.out.println(arrayB[1]); //100
        System.out.println(arrayB[2]); //200
    }
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar=6276:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\variableandoperator Demo03ArraySame
[I@776ec8df
0
0
0
=================
[I@776ec8df
0
10
20
[I@776ec8df
0
10
20
=================
[I@776ec8df
0
100
200

Process finished with exit code 0

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

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

相关文章

ubuntu调整路由顺序

Ubuntu系统跳转路由顺序 1、安装ifmetric sudo apt install ifmetric2、查看路由 route -n3、把Iface下面的eth1调到第一位 sudo ifmetric eth1 0命令中eth1是网卡的名称,更改网卡eth1的跃点数(metric值)为0(数值越小&#xf…

存放数据的方式:Java集合框架

文章目录 1. 目前存放数据的方式2. Java集合框架3. Collection接口常用方法解析public boolean add(E e)public void clear()public boolean remove(E e)public boolean contains(E e)public boolean isEmpty()public int size()public Object[] toArray() 4. 迭代器5. 增强for…

从零基础开始开发自己的第一个微信小程序

文章目录 内容介绍小程序开发步骤注册微信小程序账号下载开发工具搭建开发环境创建工程编写代码手机上查看效果 工程里的文件作用介绍总结 内容介绍 通过本篇blog,你可以熟悉从零开始,搭建小程序开发环境,并运行起自己的第一个小程序。 小程…

Stability AI旗舰图像模型 SDXL1.0发布,AI绘画进入新的时代

Stability AI于7月26号开源了SDXL1.0文生图模型,要知道距离SDXL0.9开源发布也不过一个月,只能说AI发展日新月异。 根据官网介绍,SDXL1.0经过迭代更新,已经是目前世界上最好的图像生成模型 官网根据Discord上的几代实验模型和外部测试&#…

股票量价关系分析

量增价平 量增价平是指成交量增加,股价保持相对平稳的量价关系模型,量的增加可以是资金大量流入引起,也可以是资金大量流出引起,因此这种关系模型需要根据股价所处的位置来具体分析。1、股价处于低位 当股价处于低位,此…

Unity之webgl端通过vue3接入腾讯云联络中心SDK

腾讯云联络中心SDK:云联络中心 Web-SDK 开发指南-文档中心-腾讯云 (tencent.com) 1 首先下载Demo ​ 1.1 对其进行解压 ​ 1.2根据文档操作 查看README.md,根据说明设置server下的dev.js里的相关参数。 然后打开电脑终端,cd到项目的路径: ​ 安装…

喜报 | 《中国AIOps现状调查报告(2023)》发布!擎创科技案例再度入选

(本文部分内容来自《中国AIOps现状调查报告(2023)》,丝小编扣1,领取完整版报告) 2023年7月18日,信通院Xops产业创新发展论坛于北京成功举办。大会旨在提高企业研发运营水平,加强XOp…

243. 一个简单的整数问题2(树状数组)

输入样例: 10 5 1 2 3 4 5 6 7 8 9 10 Q 4 4 Q 1 10 Q 2 4 C 3 6 3 Q 2 4输出样例: 4 55 9 15 解析: 一般树状数组都是单点修改、区间查询或者单点查询、区间修改。这道题都是区间操作。 1. 区间修改用数组数组维护差分数组 2. 区间查询&am…

实现弧形切角两种方式

1、css 的 radial-gradient <view style"padding:30px; background: #ccc;"><view class"navActive"></view> </view>.navActive{width: 200px;height: 40px;background-color: #fff;color: rgb(0,63,136);position: relative;bor…

windows环境下安装elasticsearch、kibana

通过本文可以快速在windows系统上安装elasticsearch、kibana环境。 当你用Integer类型的时候&#xff0c;要非常小心&#xff0c;因为100等于100、但是200不等于200&#xff0c;当然&#xff0c;如果你会一点小花招&#xff0c;也可以让100不等于100、让200等于200。(运算符比较…

优化供应链和库存管理:PDM系统的物料控制之道

在现代制造业中&#xff0c;优化供应链和库存管理是企业实现高效运营和降低成本的重要目标。PDM系统作为一款强大的数字化工具&#xff0c;扮演着物料控制之道的角色&#xff0c;帮助企业实现优化供应链和库存管理的目标。让我们一同深入探讨&#xff0c;看看PDM系统是如何通过…

git clone 登录 github

git clone 登录 github 目录概述需求&#xff1a; 设计思路实现思路分析1.github 设置setting2.输入passwd 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result…

mac切换jdk版本

查询mac已有版本 1、打开终端&#xff0c;输入&#xff1a; /usr/libexec/java_home -V注意&#xff1a;输入命令参数区分大小写(必须是-V) 2.目前本地装有两个版本的jdk xxxxedydeMacBook-Pro-9 ~ % /usr/libexec/java_home -V Matching Java Virtual Machines (2):20.0.1 (…

Cocos Creator不规则按钮

实现该功能需要用到组件PolygonCollider2D&#xff0c;官方链接&#xff1a; https://docs.cocos.com/creator/3.4/manual/zh/physics-2d/physics-2d-collider.html 创建组件 创建一个精灵节点&#xff1a; 创建碰撞组件PolygonColider2D&#xff0c;如图 给按钮添加多边形碰…

【Axure教程】移动端二级滑动选择器

今天教大家制作移动端二级滑动选择器的原型模板&#xff0c;该原型已全国一二级省市选择器为案例&#xff0c;因为该原型用中继器做的&#xff0c;所以制作完成之后使用也很方便&#xff0c;只需修改中继器表格里的内容即可 一、效果展示 1. 拖动选择 2. 快捷选择 【原型预览…

超全整理——116道网络安全工程师面试真题(附答案),建议收藏!

随着国家对网络安全的重视度&#xff0c;促使这个职业也变得炙手可热&#xff0c;越来越多的年轻人为进入安全领域在做准备。 数以百计的面试&#xff0c;为何迟迟无法顺利入职&#xff1f;能力无疑是至关重要的&#xff0c;可却有不少能力不比已入职的同事差却应聘失败的人&a…

vite babel 获取组件的 children 代码, 填写到 jsxCode 属性中

最终效果 <DocsModule title"类型"><Button>默认按钮</Button><Button type"primary">主要按钮</Button><Button type"success">成功按钮</Button><Button type"danger">危险按钮&l…

【Jmeter】 Report Dashboard 生成html图形测试报告

目录 背景 生成图形报告的方式 1、直接使用一个已存在的 CSV文件生成 2、负载测试完成后自动生成 使用示例 报告内容详情 测试报告摘要图 响应时间随时间变化曲线 活跃线程随时间变化曲线 I/O&#xff08;Bytes&#xff09;随时间变化曲线(忽略事务控制器示例结果) …

【阻止IE强制跳转到Edge浏览器】

由于微软开始限制用户使用Internet Explorer浏览网站&#xff0c;IE浏览器打开一些网页时会自动跳转到新版Edge浏览器&#xff0c;那应该怎么禁止跳转呢&#xff1f; 1、点击电脑左下角的“搜索框”或者按一下windows键。 2、输入“internet”&#xff0c;点击【Internet选项…

促进跨部门协作:PDM系统的多用户协同编辑

在现代企业中&#xff0c;跨部门协作是推动创新和高效工作的关键。PDM系统&#xff08;Product Data Management&#xff0c;产品数据管理&#xff09;作为一款强大的数字化工具&#xff0c;提供了多用户协同编辑功能&#xff0c;有效促进了跨部门之间的协作与沟通。让我们一同…