当前位置:网站首页>数组及其内存管理三问
数组及其内存管理三问
2022-07-29 12:12:00 【妃宫千早】
1 在java中 声明并创建数组的过程中,内存是如何分配的
Java 语言是典型的静态语言,因此 Java 数组是静态的,即当数组被初始化之后,该数组 所占的内存空间、数组长度都是不可变的。Java 程序中的数组必须经过初始化才可使用。所谓初始化,即创建实际的数组对象,也就是在内存中为数组对象分配内存空间,并为每个数组 元素指定初始值。
2 java数组的初始化有几种方式你能说说吗
静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。
3 基本类型的数组和引用数组类型之间 在初始化时内存分配机制有什么不同吗
对于基本类型数组而言,数组元素的值直接存储在对应的数组元素中,因此基本类型 数组的初始化比较简单:程序直接先为数组分配内存空间,再将数组元素的值存入对应内存里。
引用类型数组的数组元素依然是引用类型的,因此数组元素里存储的还是引用(引用变量),它指向另一块内存,这块内存里存储了该引用变量所引用的对象(包括数组和Java 对象)。
题外
其实 大部分的时候,我们把数组变量和数组对象搞混了,数组变量只是一个引用变量(有点类似于C语言里的指针);而数组对象就是保存在堆内存中的连续内存空间。对数组执行初始化,其实并不是对数组变量执行初始化,而是在堆内存中创建数组对象也就是 为该数组对象分配一块连续的内存空间,这块连续的内存空间的长度就是数组的长度。
对于很多Java 程序员而言,他们最容易混淆的是:引用类型的变量何时只是栈内存中的 变量本身,何时又变为引用实际的Java 对象。其实规则很简单:引用变量本质上只是一个指 针,只要程序通过引用变量访问属性,或者通过引用变量来调用方法,该引用变量就会由它所 引用的对象代替。
有些书中总是不断地重复:基本类型变量的值被存储在栈内存中,其实这句话是完全错误的。例如,图1.5中的2、5、-12、20,它们都是基本类型的值,但实际上它们却被存储在堆内存中。实际上应该说:所有局部变量都是放在栈内存里保存的,不管其是基本类型的变量,还是引用类型的变量,都是存储在各自的方法栈内存中的;但引用类型的变量所引用的对象(包括数组、普通的对象)则总是存储在堆内存中。
边栏推荐
- Based article 】 【 learn with Rust | Rust, variables and data types
- Kubernetes基本概念
- Hugo NexT V4 介绍
- 金仓数据库KingbaseES客户端编程接口指南-ODBC(8. 示例说明)
- SQL clock 】 【 daily DAY 23 丨 reporting to the CEO job difficulty moderate 】 【
- MySQL高级_视图
- 365天挑战LeetCode1000题——Day 043 有效的正方形 数学
- 【每日SQL打卡】DAY 24丨找到连续区间的开始和结束数字【难度中等】
- DAY 25 daily SQL clock 】 【 丨 different sex daily score a total difficulty moderate 】 【
- 第二章总结
猜你喜欢
随机推荐
2022-07-29日报:AlphaFold最新重大进展:完成几乎所有已知的2亿多蛋白质结构预测,完全开放
mapbox 地图 生成矢量数据圆
Recursion - Eight Queens Problem
SQL clock 】 【 daily DAY 23 丨 reporting to the CEO job difficulty moderate 】 【
金仓数据库KingbaseES安全指南--6.8. SSPI身份验证
【day04】IDEA, method
PL/SQL 事务
【每日SQL打卡】DAY 27丨每次访问的交易次数【难度困难-提前放出来】
593. 有效的正方形
一文带你搞懂JSON和TCP/IP
ECCV 2022 | 基于关系查询的时序动作检测方法
Chapter 2 Summary
【每日SQL打卡】DAY 22丨平均售价【难度中等】
金仓数据库KingbaseES客户端编程接口指南-ODBC(6. KingbaseES ODBC 的扩展属性)
微信H5网页分享只显示链接处理办法
【每日SQL打卡】DAY 25丨不同性别每日分数总计【难度中等】
WordPress 重置密码
365 days challenge LeetCode1000 topic - Day 043 square mathematics effectively
金仓数据库 KingbaseES 客户端编程接口指南 - ODBC 驱动使用
记账APP:小哈记账3——登录页面的制作








