theboyaply
theboyaply
发布于 2020-01-05 / 1022 阅读
0
0

java基础五(数组的使用)

介绍

  • 数组是多个相同类型数据的组合,实现对这些数据的统一管理
  • 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
  • 数组属于引用类型,数组数据是对象,数组中的每个元素相当于该对象的成员变量

数组的声明

// 动态声明:先声明,再赋值,此时每个元素值为int的默认值,即0
int[] arr = new int[4];
// 然后再挨个赋值
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

// 静态声明:定义数组的同时,给数组赋值。这种方式原理与动态声明一样,只是创建的时候在内存中帮我们进行了arr[0] = 1等操作
int[] arr = new int[]{1, 2, 3, 4};

// 定义数组变量时有两种形式,都是可以的
int arr[] = xxx;
int[] arr = xxx;

注意: 如果在new int[]里面声明了数组的长度,后面不可再使用{}。即这种写法是错误的new int[4]{}
对于基本数据类型而言,默认初始化值各有不同。对于引用数据类型而言,默认初始化值为null

以上两种声明数组方式,都是先在堆空间中new一个数组对象,并且每个元素的默认值都为0(int默认值为0),然后在栈空间中创建一个名为arr的引用变量,然后再挨个赋值 arr[0] = 1; arr[1] = 2;等等。其内存结构如下:

声明数组内存结构图.png

二维数组

我们常见的二维数组声明方式大多如下所示:

int[][] arr = new int[4][4];
int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};

但其实我们可以这样来理解它的创建方式:

// 先声明一个二维数组,每个元素默认为null
int[][] arr = new int[4][];
// 然后将每个元素值改为一个数组对象
arr[0] = new int[4];
arr[1] = new int[4];
arr[2] = new int[4];

其内存结构图如下:

二维数组内存结构图.png

值得注意的是,二维数据所创建的元素值是引用类型的,所以在初始化之前不能引用否者会出现空指针异常,比如

int[][] i = new int[4][];
i3[0][0] = 12;

评论