【java基础复习】java中的数组在内存中是如何存储的?
- 基本数据类型与内存存储
- 数组类型与内存存储
- 为什么数组需要两块空间?
- 感谢 💖
基本数据类型与内存存储
首先,让我们回顾一下基本数据类型的内存存储方式。对于一个基本类型变量,例如int类型的变量a,内存中只有一块内存空间,它存储着该变量的值。这块内存空间具有一个唯一的内存地址。比如 int a = 100 ,a就是内存中一块存储空间的名称,它的地址也就是这块存储空间的地址,比如是0x1112,a的值是100,也就是这块内存空间里的内容。
| 代码 | 内存地址 | 内存数据 |
|---|---|---|
| int a = 100 | 0x1112 | 100 |
数组类型与内存存储
现在让我们考虑数组类型的内存存储方式。对于一个数组变量,例如int数组变量arr,它实际上包含两块内存空间。一块内存空间存储着数组内容本身,另一块内存空间存储着数组的位置(或者说是对数组内容的引用)。
| 代码 | 内存地址 | 内存数据 |
|---|---|---|
| int[] arr = {1,2,3} | 0x1113 | 0x3000 |
| 0x3000 | 1 | |
| 0x3004 | 2 | |
| 0x3008 | 3 |
为什么数组需要两块空间?
现在让我们回答为什么数组需要两块空间而不能只用一块。考虑以下代码片段:
int[] arrA = {1, 2, 3};
int[] arrB = {4, 5, 6, 7};
arrA = arrB;
在这个代码片段中,我们有两个数组变量arrA和arrB,它们分别具有不同的长度。然后,我们将arrB的值赋给arrA。如果arrA的内存空间直接存储数组内容,那么它将没有足够的空间来容纳arrB的所有元素。这会导致内存溢出或数据丢失的问题。而使用两块空间存储数组变量和数组内容,那么我们进行赋值时,只是对内容地址的赋值,也就是说,当我们执行arrA = arrB;时,实际上是将arrA指向了和arrB相同的内存位置,而arrA原来指向的{1, 2, 3}的内存空间由于不再被引用而可以进行垃圾回收。
这是由于在JVM中,内存被分为不同的区域,包括堆(Heap)、栈(Stack)、方法区(Method Area)等。其中,堆用于存储对象的实例和数组,而栈用于存储局部变量和方法调用的信息。
对于数组来说,实际的数据内容存储在堆内存中。而数组变量(引用)本身存储在栈内存中。当我们执行赋值操作时,实际上是将一个引用复制给另一个引用,这使得两个引用指向了相同的堆内存位置。
下面这张图简单的体现了arrB 和 arrA这两个数组在内存中的存储情况:

下面这张图体现了在执行arrA = arrB时内存的存储情况。可以看到,只是改变的arrA数组的指向,也就是地址。arrA原来指向的那块堆空间随后会被内存回收。

希望上面的解释和演示能够帮助大家更好地理解java中的数组的内存存储和赋值原理。
感谢 💖
好啦,这次的分享就到这里,感谢大家看到这里🤞
相关文章:
【java基础复习】java中的数组在内存中是如何存储的?
基本数据类型与内存存储数组类型与内存存储为什么数组需要两块空间?感谢 💖 基本数据类型与内存存储 首先,让我们回顾一下基本数据类型的内存存储方式。对于一个基本类型变量,例如int类型的变量a,内存中只有一块内存空…...
MySQL数据库 MHA高可用
MySQL MHA 什么是 MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的…...
leetcode669. 修剪二叉搜索树(java)
修剪二叉搜索树 题目描述递归代码演示: 题目描述 难度 - 中等 LC - 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留…...
计算机网络的故事——确认访问用户身份的认证
确认访问用户身份的认证 HTTP使用的认证方式:BASIC认证(基本认证)、DIGEST(摘要认证)、SSL客户端认证、FormBase认证(基于表单认证)。 基于表单的认证:涉及到session管理以及cookie…...
C#禁用或启用任务管理器
参考文档https://zhuanlan.zhihu.com/p/95156063 借助上述参考文档里的C#操作注册表类,禁用或启用任务管理器 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HideTaskMgr { class Program { …...
【Redis】NoSQL之Redis的配置及优化
关系数据库与非关系数据库 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言&a…...
【数据库】如何利用Python中的petl将PostgreSQL中所有表的外键删除,迁移数据,再重建外键
一、简介 在数据库管理中,外键是一种重要的约束,用于确保数据的一致性和完整性。然而,在某些情况下,我们可能需要删除或修改外键。本文将介绍如何使用Python中的petl库将PostgreSQL中所有表的外键删除,迁移数据&#…...
Si24R2F+畜牧 耳标测体温开发资料
Si24R2F是针对IOT应用领域推出的新款超低功耗2.4G内置NVM单发射芯片。广泛应用于2.4G有源活体动物耳标,带实时测温计步功能。相较于Si24R2E,Si24R2F增加了温度监控、自动唤醒间隔功能;发射功率由7dBm增加到12dBm,距离更远…...
阿里云服务器退款流程_退订入口_到账时间说明
阿里云服务器如何退款?云服务器在哪申请退款?在用户中心订单管理中的退订管理中退款,阿里云百科分享阿里云服务器退款流程,包括申请退款入口、云服务器退款限制条件、退款多久到账等详细说明: 目录 阿里云服务器退款…...
自然语言处理实战项目17-基于多种NLP模型的诈骗电话识别方法研究与应用实战
大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目17-基于NLP模型的诈骗电话识别方法研究与应用,相信最近小伙伴都都看过《孤注一掷》这部写实的诈骗电影吧,电影主要围绕跨境网络诈骗展开,电影取材自上万起真…...
安全错误攻击
近年来基于错误的密码分析(fault-based cryptanalysis)已成为检测智能卡(Smartcard)安全的重要因素。这种基于错误的密码分析,假设攻击者可以向智能卡中导入一定数量的、某种类型的错误,那么智能卡会输出错…...
ELK安装、部署、调试 (八)logstash配置语法详解
input {#输入插件 }filter {#过滤插件 }output {#输出插件 } 1.读取文件。 使用filewatch的ruby gem库来监听文件变化,并通过.sincedb的数据库文件记录被监听日志we年的读取进度(时间 搓) 。sincedb数据文件的默认路径为<path.data>/…...
SPI协议
文章目录 前言一、简介1、通信模式2、总线定义3、SPI通信结构4、SPI通讯时序5、SPI数据交互过程 二、多从机模式1、多NSS2、菊花链3、SPI通信优缺点4、UART、IIC、SPI 区别 三、总结四、参考资料 前言 SPI协议是我们的重要通信协议之一,我们需要掌握牢靠。 一、简介…...
机器学习算法系列————决策树(二)
1.什么是决策树 用于解决分类问题的一种算法。 左边是属性,右边是标签。 属性选择时用什么度量,分别是信息熵和基尼系数。 这里能够做出来特征的区分。 下图为基尼系数为例进行计算。 下面两张图是对婚姻和年收入的详细计算过程(为GINI系…...
ACM中的数论
ACM中的数论是计算机科学领域中的一个重要分支,它主要研究整数的性质、运算规律和它们之间的关系。在ACM竞赛中,数论问题经常出现,因此掌握一定的数论知识对于参加ACM竞赛的选手来说是非常重要的。本文将介绍一些常见的数论概念和方法&#x…...
我的创作纪念日 —— 一年之期
前言 大家好!我是荔枝嘿~看到官方私信才发现原来时间又过去了一年,荔枝也在CSDN中创作满一年啦,虽然中间因为种种原因并没有经常输出博文哈哈,但荔枝一直在坚持创作嘿嘿。记得去年的同一时间我也同样写了一篇总结文哈哈哈&#x…...
qt.qpa.plugin:找不到Qt平台插件“wayland“|| (下载插件)Ubuntu上解决方案
相信大家也都知道这个地方应该做什么,当然是下载这个qt平台的插件wayland,但是很多人可能不知道怎么下载这个插件。 那么我现在要说的这个方法就是针对这种的。 sudo apt install qtwayland5完事儿了奥兄弟们。 看看效果 正常了奥。...
详解Spring Boot中@PostConstruct的使用
PostConstruct 在Java中,PostConstruct是一个注解,通常用于标记一个方法,它表示该方法在类实例化之后(通过构造函数创建对象之后)立即执行。 加上PostConstruct注解的方法会在对象的所有依赖项都已经注入完成之后执行…...
判断子序列
判断子序列 题目: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"…...
Python Opencv实践 - 轮廓特征(最小外接圆,椭圆拟合)
import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.PNG") plt.imshow(img[:,:,::-1])#轮廓检测 img_gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) ret,thresh cv.threshold(img_gray, 127, 255, 0) contou…...
14届蓝桥杯省赛Java A 组Q4~Q5
题目链接: Q4 蓝桥云课:棋盘 洛谷:P13879 [蓝桥杯 2023 省 Java A] 棋盘 Q5 蓝桥云课:互质数的个数 洛谷:P13880 [蓝桥杯 2023 省 Java A] 互质数的个数 算法原理: Q4解法:前缀和差分 时间…...
Phi-3-Mini-128K技术文档翻译与润色对比:中英互译质量评估
Phi-3-Mini-128K技术文档翻译与润色对比:中英互译质量评估 最近在折腾一些开源项目,免不了要和英文技术文档打交道。对于咱们中文开发者来说,直接阅读原版文档虽然最准确,但有时候效率确实不高。机器翻译就成了一个绕不开的工具。…...
【进阶指南】VSCode + Clang-Format:从零定制你的专属代码风格(130+配置项实战解析)
1. 为什么需要定制代码风格? 当你第一次接触代码格式化工具时,可能会觉得默认配置已经足够好用。但当你参与过几个团队项目后,就会发现统一的代码风格有多重要。我曾经接手过一个遗留项目,里面混杂着五种不同的缩进风格——有用制…...
(三)谷歌浏览器结合Selenium IDE实现自动化脚本录制与Python导出
1. 为什么你需要Selenium IDE脚本录制工具 最近有个测试同事跟我吐槽,说他每天要花3小时重复点击同一个电商网站,就为了检查商品详情页的展示逻辑。我听完直接给他安利了Selenium IDE——这个藏在谷歌浏览器里的小工具,5分钟就能搞定他半天的…...
达摩院StructBERT中文相似度模型部署教程:Prometheus监控指标接入
达摩院StructBERT中文相似度模型部署教程:Prometheus监控指标接入 1. 项目概述 StructBERT中文相似度模型是阿里达摩院基于StructBERT大规模预训练模型开发的专业语义匹配工具。该模型通过强化语言结构理解能力,能够将中文句子转化为高质量的特征向量&…...
Base64隐写术逆向工程:从CTF题到自制解密工具(Python实现)
Base64隐写术逆向工程:从CTF题到自制解密工具(Python实现) 1. Base64编码原理与隐写空间 Base64编码的本质是将二进制数据转换为由64个可打印字符(A-Z、a-z、0-9、、/)组成的ASCII字符串。每个Base64字符对应6位二进制…...
MS5803-14BA I²C驱动开发:嵌入式压力传感器实战指南
1. MS5803-14BA压力传感器库深度解析:面向嵌入式工程师的IC驱动开发实践1.1 传感器核心特性与工程定位MS5803-14BA是TE Connectivity(原Measurement Specialties)推出的高精度数字压力/温度复合传感器,采用MEMS压阻式传感原理与Δ…...
TLB缓存原理与内存地址转换优化
深入理解TLB缓存原理与实现1. 内存管理单元与地址转换基础1.1 MMU工作原理现代计算机系统中,内存管理单元(MMU)负责将虚拟地址转换为物理地址。这一转换过程依赖于页表结构,在64位系统中通常采用4级页表架构:PGD (Page Global Directory)PUD …...
数字化社交与营销突围:二维彩虹赋能电子名片与私域引流
在移动互联网深度渗透的今天,企业与个人面临的流量竞争日益激烈。传统的社交方式与营销手段正遭遇瓶颈:纸质名片易丢失、信息更新滞后;微信群二维码7天有效期导致流量流失;多平台推广链接分散,难以形成合力。面对这些痛…...
终极OBS Studio直播软件指南:5步打造专业级智能直播系统
终极OBS Studio直播软件指南:5步打造专业级智能直播系统 【免费下载链接】obs-studio OBS Studio - 用于直播和屏幕录制的免费开源软件。 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio 想象一下这样的场景:你正在直播一场重要的…...
