当前位置:网站首页>数组及其内存管理三问
数组及其内存管理三问
2022-07-29 12:12:00 【妃宫千早】
1 在java中 声明并创建数组的过程中,内存是如何分配的
Java 语言是典型的静态语言,因此 Java 数组是静态的,即当数组被初始化之后,该数组 所占的内存空间、数组长度都是不可变的。Java 程序中的数组必须经过初始化才可使用。所谓初始化,即创建实际的数组对象,也就是在内存中为数组对象分配内存空间,并为每个数组 元素指定初始值。
2 java数组的初始化有几种方式你能说说吗
静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。
3 基本类型的数组和引用数组类型之间 在初始化时内存分配机制有什么不同吗
对于基本类型数组而言,数组元素的值直接存储在对应的数组元素中,因此基本类型 数组的初始化比较简单:程序直接先为数组分配内存空间,再将数组元素的值存入对应内存里。
引用类型数组的数组元素依然是引用类型的,因此数组元素里存储的还是引用(引用变量),它指向另一块内存,这块内存里存储了该引用变量所引用的对象(包括数组和Java 对象)。
题外
其实 大部分的时候,我们把数组变量和数组对象搞混了,数组变量只是一个引用变量(有点类似于C语言里的指针);而数组对象就是保存在堆内存中的连续内存空间。对数组执行初始化,其实并不是对数组变量执行初始化,而是在堆内存中创建数组对象也就是 为该数组对象分配一块连续的内存空间,这块连续的内存空间的长度就是数组的长度。
对于很多Java 程序员而言,他们最容易混淆的是:引用类型的变量何时只是栈内存中的 变量本身,何时又变为引用实际的Java 对象。其实规则很简单:引用变量本质上只是一个指 针,只要程序通过引用变量访问属性,或者通过引用变量来调用方法,该引用变量就会由它所 引用的对象代替。
有些书中总是不断地重复:基本类型变量的值被存储在栈内存中,其实这句话是完全错误的。例如,图1.5中的2、5、-12、20,它们都是基本类型的值,但实际上它们却被存储在堆内存中。实际上应该说:所有局部变量都是放在栈内存里保存的,不管其是基本类型的变量,还是引用类型的变量,都是存储在各自的方法栈内存中的;但引用类型的变量所引用的对象(包括数组、普通的对象)则总是存储在堆内存中
。
边栏推荐
- SQL clock 】 【 daily DAY 21 丨 report the state of the system date of continuous difficulty difficult 】 【
- How much is the test environment, starting from the actual needs
- 【day04】IDEA, method
- DAY 22 丨 daily SQL clock 】 【 the average selling price of the difficulty of medium 】
- 2.1冒泡排序(Bubble Sorting)
- 递归-八皇后问题
- SQL clock in daily DAY 21 丨 】 each post comments difficulty moderate 】 【
- 【一起学Rust | 基础篇】rust函数与流程控制详解
- 【实用工具】Image Assistant下载指定页面的所有图片
- socket+websocket
猜你喜欢
随机推荐
MFC学习备忘
什么是DOM
Network layer and transport layer restrictions
Kubernetes基本概念
WordPress 重置密码
金仓数据库 KingbaseES 客户端编程接口指南 - ODBC 驱动使用
【每日SQL打卡】DAY 27丨列出指定时间段内所有的下单产品【难度简单】
DAY 22 丨 daily SQL clock 】 【 the average selling price of the difficulty of medium 】
DAY 27 daily SQL clock 】 【 丨 within a specified period of time all order products [difficult simple]
AI cocoa AI frontier introduction (7.29)
多元宇宙:重塑新商业格局
【day04】IDEA, method
Basic Concepts of Kubernetes
Path dependence - accidental decision to rely on.
关于栈迁移的那些事儿
【每日SQL打卡】DAY 21丨每个帖子的评论数【难度中等】
365天挑战LeetCode1000题——Day 043 有效的正方形 数学
飞桨框架体验评测交流会,产品的使用体验由你来决定!
2.1冒泡排序(Bubble Sorting)
小程序云函数实现微信支付如此简单