---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ---------------------
5.0数组
5.0.1数组的定义
a) 概念
同一种类型数据的集合。其实数组就是一个容器。
b) 数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素
c) 格式1
元素类型[] 数组名 = new 元素类型 [元素个数或数组长度];
元素类型 数组名[] = new 元素类型 [元素个数或数组长度];
(以上两种格式都可以,以第一种格式居多)
示例:int[] arr= new int[5];
d) 格式2(静态初始化方式)
元素类型[] 数组名 =new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};//此时数组不写长度
int[] arr={3,5,1,7};//也可简写为此
5.0.2数组的内存结构图示
![](https://img-my.csdn.net/uploads/201302/20/1361301620_4710.jpg)
2. 数组的内存分配及特点
java程序运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据的方式和内存管理方式。
a) 栈内存
i. 用于存储局部变量,当数据使用完,所占空间会自动释放
b) 堆内存
i. 数组和对象,通过new建立的实体都存放在堆内存中
ii. 每一个实体都有内存地址值
iii. 实体中的变量都有默认初始化值(以数据类型确定)
iv. 实体不再被使用,会在不确定的时间内被垃圾回收器回收
5.0.4数组操作常见问题
c) 数组脚标越界异常
i. 英文为:ArrayIndexOutOfBoundsException
ii. 编译通过(只检查语法错误),new在运行后才会建立,并在堆内存中建立空间
int[] arr = new int[2];
System.out.println(arr[3]);
iii. 访问到了数组中的不存在的脚标时发生。
d) 空指针异常
i. 英文为:NullPointerException
ii. 编译通过(只检查语法错误),运行时没有指向
int[] arr =null;
System.out.println(arr[0]);
iii. arr引用没有