袁艺

个人站

欢迎来到我的个人站~


JAVA 基本类型数组的初始化(原理篇)

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

数组

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

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

public class PrimitiveArrayTest
{
  public static void main(String[] args)
  {
    //定义一个 int[] 类型的数组变量
    int[] iArr;
    //动态初始化数组, 数组长度为5
    iArr = new int[5];
    //采用循环方式为每个数组元素赋值
    for (int i = 0; i < iArr.length; i++)
    {
      iArr[i] = i + 10;
    }
    //使用 foreach 循环输出数组
    for (int temp : iArr)
    {
      System.out.println(temp);
    }
  }
}

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

1

上图可以看出, 执行了 int[] iArr 代码后. 仅在 栈内存 中定义了一个空引用(就是 iArr数组变量) 这个引用并未指向任何有效的内存.当执行 iArr = new int[5] 动态初始化后, 系统就开始搞事了. 会为其分配内存空间, 并分配默认的初始值: 所有数组元素都被赋值为 0 . 此时内存情况如下:

2

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

3

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