数组初始化是再熟悉不过的一个概念,但是有些细节问题往往会被忽略,例如:
public class Person{
public int age;
public String name;
public static void main(String[] args){
Person[] persons = new Person[5];
person[0].age = 16;//NullPointerException
System.out.println(persons[0].age);
}
}
如上运行时,会出现NullPointerException,由于对于引用类型(非8个基本类型)初始化时,每个元素的默认值为null,实例化仅仅是构造出一个空间,若想进行如上操作,需要先把目标位置放入一个目标类:
Person[] persons = new Person[5];
Person[0] = new Person();
person[0].age = 16;
对于基本类型数组的初始化,每个元素的默认值都是基本类型数据的默认值(而不是null),例如int为0,boolean为false:
int[] array = new int[5];
array[0] = 1;
System.out.println(array[0]);
如此进行赋值便不会出现问题。
在使用泛型时也需注意,
ArrayList list = new ArrayList();
ArrayList<Integer> list2 = new ArrayList<Integer>();
不加泛型,默认使用Object类进行存储,泛型仅支持引用类型,因此不是基本类型,需要使用基本类型的包装类。