java中数组_java中数组的内容

本文介绍了Java中数组的概念、声明、初始化以及内存分配。数组是存储有序数据的集合,分为简单数据类型和引用数据类型。声明数组仅分配引用,实际数组对象和元素的内存分配需通过`new`操作符。静态初始化在定义时赋值,动态初始化后续赋值。内存分配涉及栈和堆,简单数据类型数组在栈中存引用,堆中存数据,而引用类型数组还包括元素所引用的对象内存分配。
摘要由CSDN通过智能技术生成

今天了解了一下java中数组的内容。

数组是用于存储一组有序数据的集合,可以通过数组来保存任何相同数据类型的数据,而数组本身属于引用类型。

以一维数组为例,数组的声明写成 数据类型[]  数组名。通过这条语句仅仅声明了一个数组变量,并没有创建一个真正的数组,也无法确定数组的长度,这时候数组还不能被访问。在声明了数组之后,就要具体规定数组的大小,给数组分配内存空间,可以通过new操作符来显示创建一个数组,在定义并用运算符new为数组分配空间后,才可以引用数组中的每个元素。当然数组的声明和数组的大小分配可以放到一起完成,即  type [] arr_name = new type[length];接下来就是对数组进行初始化,在java中,数组的初始化有两种,静态初始化和动态初始化。(而在java中,为了保证安全性,防止内存缺失,为已创建的数组提供了默认化初始机制,在创建成功一个数组后,将完成三个动作:1.创建一个数组对象  2.在内存中给数组分配存储空间  3.给数组的元素初始化一个相应的数据类型的默认值。)所谓静态初始化就是在定义数组的时候就对数组进行初始化,例:int k[]={1,3,5,7,9};动态初始化就是将数组的定义和空间分配与给数组元素赋值分开,例:char ch=new char[3];ch[0]=a;ch[1]=b;ch[2]=c;。

下面讲一下数组的内存空间和内存分配。先介绍java在内存分配时会涉及到的区域:寄存器,栈(存放基本类型和对象的引用,但对象本身不存放在栈中,而是存放在堆中),堆(存放用new产生的数据)。

首先介绍简单数据类型数组从定义到初始化的内存变化过程。在声明数组的时候,系统会给这个数组分配用于存放这个数组的内存空间,它会在堆内存空间中给数组分配一个空间用于存放数组引用变量,在栈内分配空间存入数组对象的引用;在创建简单数据类型的数组的时候,系统会分配合适的堆空间用来存放该种数据类型数据的内存空间,并且将这个数组的各个元素赋一个和数组类型匹配的初值;当对数组进行初始化时,会将值赋给对应的各个数组元素。

如图:

2039fc04c4c43dfe9bfacd99ff3038a0.png

引用数据类型数组从定义到初始化内存变化的过程。引用类型数组的定义和简单数据类型数组的定义基本相同;创建的时候也是首先给数组元素分配内存空间,然后赋给这些数组元素一个默认的初始值null;在进行初始化的时候,因为数组本身也是引用类型,而现在的数组元素也是引用类型,所以数组元素所引用的对象也要分配内存空间。

如图:

a9ef2ec84dd6e36a59475f87d26272d8.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值