数组

数组是存储数据的容器,长度固定,且只能存储相同类型的数据

   既可以存储基本类型数据,又可以存储引用类型数据

数组的定义

1.动态初始化

 在定义数组时只指定数组的长度,由系统自动为元素赋初值,不同类型的元素有不同的默认值

 格式:

 数据类型[]  数组名 = new 数据类型[n];  //n指数组的长度

2.静态初始化

在定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式,具体格式如下:

1、类型[] 数组名 = new 类型[]{元素,元素,……};

2、类型[] 数组名 = {元素,元素,元素,……};

注意第一种方式中括号里不能写数组的长度,否则会编译失败,因为编译器认为你写的数字可能和后面元素的个数不符,存在安全隐患

小结:

1.定义数组后,数组元素就都有了默认值,根据存储元素的类型不同,默认值不同(如int类型的数组,默认值为0)

2.数组长度可以由length属性获得

3.数组通过索引来访问数组元素,索引从0 开始,最大的索引是 n-1

4.arr保存的是数组的首地址

5.int[] arr 与int arr[] 这两种写法都是可以的,Java一般采用第一种写法,C语言一般采用第二种写法

如何判断数组为空?

arr.length==0时,数组为空,[]

切记不可用arr==null来判断,因为arr是个变量,它存储的是数组的引用,绝不是null。

若是arr=null,则调用数组时会出现空指针异常

二维数组

二维数组在内存中仍然是一维数组。

 

定义格式

格式1:

  数据类型[][] 数组名 = new 数据类型[m][n];

   m: 代表二维数组中一维数组的个数

   n: 代表每个一维数组中元素的个数

格式2:

  数据类型[][] 数组名 = new 数据类型[m][];

  m: 代表二维数组中一维数组的个数

  每一个一维数组通过赋值来确定数组长度

  以这种格式定义的二维数组如int[][] arr = new int[3][]; 是不能直接使用的,必须再初始化二维数组里面的一维数组如 arr[0] = new int[5]; arr[1] = new int[4];

格式3:

  数据类型[][] 数组名 = {{元素值1,元素值2,..},{元素值1,元素值2,..},..};如  

int[][] arr = { {1,4} ,{3,6,8}, {0,9,8} };

每个一维数组的长度可以不一样。

  

二维数组的内存

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

[3]:二维数组中,有3个一维数组

[2]:三个一维数组中,每个数组的长度为2

运行程序时在堆内开辟的空间图为

  

原文地址:https://www.cnblogs.com/shizunatsu/p/11534618.html