基本类型数组的创建原理

前言

在之前的学习中, 我们已经会 初始化数组了. 但是你真的了解其内部都发生了什么嘛? 下面让我们探究一下. 扒光数组的华丽外衣, 嘿嘿.

对于 基本类型数组而言数组元素的值 是直接存储在 对应的数组元素中
因此, 初始化数组时, 先为该数组分配内存空间, 然后直接将数组元素的值 存入对应的数组元素中去.

这里写图片描述

看上图, 其中 1,2,3,4,5 是数组元素的值. 
1,2,3,4,5 外面的长方形外框, 就是数组元素. 
根据这个图, 我们可以推断出, 这是一个 int[] 数组, 它的长度是5, 就是说具有5个数组元素, 而这5个数组元素里面存放的值 分别是 1,2,3,4,5

下面让我们写份代码试试, 定义一个 int[]类型的数组变量, 采用动态初始化的方式, 然后显式的为每个数组元素赋值. 最后将数组 输出出来.

<span style="color:#000000"><code class="language-java"><span style="color:#000088">public</span> <span style="color:#000088">class</span> <span style="color:#4f4f4f">PrimitiveArrayTest</span>
{
  <span style="color:#000088">public</span> <span style="color:#000088">static</span> <span style="color:#000088">void</span> <span style="color:#009900">main</span>(String[] args)
  {
    <span style="color:#880000">//定义一个 int[] 类型的数组变量</span>
    <span style="color:#000088">int</span>[] iArr;
    <span style="color:#880000">//动态初始化数组, 数组长度为5</span>
    iArr = <span style="color:#000088">new</span> <span style="color:#000088">int</span>[<span style="color:#006666">5</span>];
    <span style="color:#880000">//采用循环方式为每个数组元素赋值</span>
    <span style="color:#000088">for</span> (<span style="color:#000088">int</span> i = <span style="color:#006666">0</span>; i < iArr.length; i++)
    {
      iArr[i] = i + <span style="color:#006666">10</span>;
    }
    <span style="color:#880000">//使用 foreach 循环输出数组</span>
    <span style="color:#000088">for</span> (<span style="color:#000088">int</span> temp : iArr)
    {
      System.out.println(temp);
    }
  }
}</code></span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

自己写然后运行看下, 接着我们来说道说道, 这里面到底发生了什么.

执行第一行代码 int[] iArr; 时 
仅仅是定义了一个数组变量, 此时的内存如下图:

这里写图片描述

上图可以看出, 执行了 int[] iArr 代码后. 
仅在 栈内存 中定义了一个空引用(就是 iArr数组变量) 
这个引用并未指向任何有效的内存.

当执行 iArr = new int[5] 动态初始化后, 系统就开始搞事了. 会为其分配内存空间, 并分配默认的初始值: 所有数组元素都被赋值为 0 . 
此时内存情况如下:

这里写图片描述

此时 iArr 数组的每个数组元素的值 都是 0 
当循环为该数组的每个 数组元素 赋值后 
此时每个数组元素的值 都变成程序显式指定的值. 
那么如下图:

这里写图片描述

从上图中可以看出, 基本类型数组的存储示意图. 
每个数组元素的值 都是直接存储在对应的内存中.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值