一、数组的概念
- 一组连续的存储空间,存储多个相同数据类型的值。
- 特点:类型相同,长度固定,可以自动给数组中的元素从0开始编号,方便操作这些元素。
二、数组的定义
数组的创建
int[] arr1 = new int[5];
int[] arr1 = new int[]{3,5,1,7};
- 声明数组变量:推荐使用int[] x 的形式声明数组。
- 创建数组:要使用一个新的关键字叫做new,new 用来在内存中产生一个容器实体。
给数组分配空间时,必须指定数组能够存储的元素个数来确定数组大小,体现了数组长度固定的特点;创建数组之后不能修改数组的大小。可以使用length 属性获取数组的大小。
三、数组的初始化
如果数组初始化中不使用运算符new。需要注意:下列写法是错误的:
int[] arr;
arr = {20,30,40};
初始化数组,必须将声明,创建,初始化都放在一条语句中,分开会产生语法错误。
四、数组下标的有效范围与常见异常
- ArrayIndexOutOfBoundsException 索引值越界异常。
一旦我们访问了不在有效范围的下标,那么就会产生数组下标越界异常。 - NullPointerException 空指针异常
引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。
五、数组内存分析
-
栈内存:栈内存存储的都是局部变量,变量一旦出了自己的作用域,那么就会马上从内存的消失,释放内存空间。 -
堆内存:堆内存存储的都是对象内存,对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时的把垃圾对象回收,这时候该对象才会消失,释放内存。 -
凡是以new关键字创建的对象,JVM都会在堆内存中开辟一个新的空间,创建一个新的对象。 -
对象如果没有变量引用了,那么该对象就是一个垃圾对象了。
六、二维数组
- 创建二维数组
int arr1[][];
char[][] arr2;
int a[][];
a = new int[2][4];
int b[][];
b = new int[2][];
b[0] = new int[2];
b[1] = new int[2];
如果不声明"行"数量的话,就是错误的写法。
- 二维数组的赋值
有三种方式:
public class InitTDArray {
public static void main(String[] args) {
int tdarr1[][] = { { 1, 3, 5 }, { 5, 9, 10 } };
int tdarr2[][] = new int[][] { { 65, 55, 12 }, { 92, 7, 22 } };
int tdarr3[][] = new int[2][3];
tdarr3[0] = new int[] { 6, 54, 71 };
tdarr3[1][0] = 63;
tdarr3[1][1] = 10;
tdarr3[1][2] = 7;
}
}
- 多维数组
多维数组在Java中是可以使用的,但因为其结构关系太过于复杂,容易出错,所以不推荐在程序中使用比二维数组更高维数的数组,如果需要存储复杂的数据,推荐使用集合类或自定义类集合类包括List、Map等。
七、不规则数组
上文讲的数组都是行、列固定的矩形方阵, Java同时也支持不规则的数组,例如二维数组中,不同行的元素个数可以不同,例如∶
a[][] = new int[3][];?
a[0]= new int[5];?
a[1] = new int[3];
a[2] = new int[4];
八、数组的基本操作
-
数组遍历: 遍历二维数组需使用双层for循环,通过数组的length属性可获得数组的长度。 -
填充和替换数组元素 数组中的元素定义完成后,可通过Arrays类的静态方法fill()方法来对数组中的元素进行分配,起到填充和替换的效果。fill()方法可将指定的int值分配给int型数组的每个元素。?语法如下∶
Arrays.fill()(int[] a ,int value)
a∶要进行元素分配的数组。 value∶要存储数组中所有元素的值。
|