java--浅显内存结构之数组

数组本身为引用数据类型

分为:一维数组 和  二维数组

一维数组:

可以理解为 将相同的数据放到一块

一维数组在内存中结构:

例如:int[]   one =new int[4];

           one[0]=27;

           one[3]=37;

整体的内存分为以下结构:

栈:存放 局部变量  、对象的引用

堆:new出来的新东西  

方法区:包括常量池   +  程序里面类名 包名 方法的定义

静态域:放静态的变量(static修饰的变量)

解析内存结构图:首先根据例子代码:

1. 定义了一个int类型的数组变量名:one    (int[]    one)

2.new了一个对象实体 (new  int[])空间大小为4    

   所以在堆空间中开辟一块  存放一个空间为4的内存      (new   int[4])

3.和第二步同时进行的步骤:因为定义的是int类型的数组   所以在堆中的每个元素默认值都为0        

4.连接起来:int[]    one       =       new int[4];   此时在堆中开辟的空间的   首地址值     赋值给  栈空间变量名为one

(:也就是说栈空间中的引用变量one  的值(是地址)    指向 堆空间开辟数组内存的首地址)

5.赋值过程:one[0]=27;

    将27 数值   赋值给   堆空间中开辟的地址值为0x3366   的下角标为0     的元素的默认值0  修改为 27

二维数组:

可以理解为先创建引用变量指向一个数组    数组里的每一个元素又是一个地址(可以理解为引用变量  只是此处直接存放地址值  然后指向一个新数组)

二维数组在内存中的结构:

例如:int[][]    arr =new  int[4][2];

           int[0][1]=90;

           int[2][1]=102;

解析内存结构图:

int[][]    arr =new  int[4][2];

1.首先int[][]   arr;  定义了一个二维数组  变量名称为:arr    在内存的栈分区中开辟一个空间  存放arr这个引用变量

2.new int[4][2]

    第一步创建了一个一维数组  大小为4  开辟的空间的首地址是0x2568  此一维数组存放的元素是地址(其他空间的首地址)

   第二步依次对应上一步的一维数组元素  创建int类型的一维数组  将首地址值放入到上一步大的一维数组中 。 创建的int类型的一维数组  里面每个元素默认值是0    

3.然后在根据

            int[0][1]=90;

0就是第一步创建的那个大数组(存放其他数组首地址的)的以一个元素   然后根据那个元素里的存放的首地址值去找对应的  第二步创建的小数组

1就是第二步创建的小数组的第二个元素中值 

然后从默认值0 修改为90

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风吹海洋浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值