What
在Java中数组可以是任意类型的,比如基本类型int[], boolean[]等等,也可以是对象类型,比如StringBuilder[],Person[]等等。
在使用基本类型数组和对象类型数组的时候是不一样的。
How
基本类型
int[] num = new int[3];//此时num数组每个元素都初始化为0了
num[2] = 2;
int a = num[1];
boolean[] change = new boolean[3];//此时change数组每个元素都初始化为false了
change[0] = true;
boolean ret = change[2];
对象类型
//以下是错误用法:
StringBuilder[] sbArray = new StringBuilder[3];//只是初始化数组,但是每个数组元素都是null
int len = sbArray[0].length();//此时会报错,NullPointer Exception
//正确用法:
StringBuilder[] sbArray = new StringBuilder[3];//只是初始化数组,但是每个数组元素都是null
sbArray[0] = new StringBuilder();
int len = sbArray[0].length();//正确执行
Why
BankAccount [ ] accounts;或 BankAccount accounts[ ]; 定义了一个存储BankAccount类对象的数组。
与C、C++不同,Java在数组的定义中并不为数组元素分配内存,因此[ ]中不需指明数组中元素的个数,即数组长度,而且对于如上定义的数组是不能引用的,必须经过初始化才可以引用。
对象数组初始化方式:
按照初始化方式不同,可以分为静态初始化和动态初始化
-
静态初始化:在定义数组的同时对数组元素进行初始化, 例如:
BankAccount[] accounts = { new BankAccount(“Zhang", 100.00),
new BankAccount(“Li", 2380.00),
new BankAccount(“Wang", 500.00),
new BankAccount(“Liu", 175.56),
new BankAccount(“Ma", 924.02)
};
-
动态初始化:使用运算符new为数组分配空间,对于基本类型的数组,其格式如下:
type arrayName[ ]=new type[arraySize];
type[ ] arrayName=new type[arraySize];
对于对象数组,使用运算符new只是为数组本身分配空间,并没有对数组的元素进行初始化。即数组元素都为空,如图。