当程序需要很多个类型一样的变量时,可以使用数组或集合来存储这些变量。数组变量和集合变量都是引用类型的变量,即它们都是对象。
Java数组的元素可以是简单数据类型、数组或类,而集合的元素只能是类。
在使用数组之前必须先对数组对象进行初始化。在初始化过程中,会为数组的每个元素分配合适的内存空间,并指定初始值。初始化完成后,数组对象在内存中的位置和大小就不会再改变了。
创建数组对象的方式:
- int[] intArray = new int[] {0, 1, 2};
- String[] stringArray = {"Java", "C", "C++"};
- double[] doubleArray = new double[8]; // 数组元素的默认值分别为 0, 0.0, ‘\u0000',false,null
数组变量并不等同于数组对象。数组变量只是一种引用类型的变量,它只用于指向数组对象。同一个数组变量可以引用不同的数组对象,同一个数组对象也可以被不同的数组变量引用。
当一个数组对象不再被任何数组变量引用时,它就会变成垃圾。
当有多个数组变量引用同一个数组对象时,通过任何一个数组变量改变了数组元素的值,其它变量也会感受到这种改变。
基本类型数组的元素的值直接存储在对应的数组元素中;引用类型数组的数组元素里存储的是引用变量,这个引用变量用于指向实际的对象。
“intArray[1] ”就是一个普通的int类型的变量,stringArray[0]是一个普通的String类型的变量。
int[][] 是一个数组元素是int[]的数组对象,int[][][] 是一个数组元素是int[][]的数组对象,它们都是普通的数组,即Java没有多维数组。所谓的二维数组就是数组元素是一维数组的数组,N维数组是数组元素是N-1维数组的数组。因此,多维数组的初始化与普通数组的初始化的本质是一样的。所以,初始化多维数组时,可以先只初始化最左边的维数,此时该数组的每个元素都相当于一个数组引用变量,这些数组元素还需要进一步初始化。
本文部分内容来源于网络,部分内容来源于以下的书籍:
《疯狂Java程序员的修养》——李刚编著,电子工业出版社,2013年