String aaa[]=new String[3];
aaa[0]=new String();
看上述代码,aaa是一个String数组的引用,而java源代码中String是作为对象类进行处理的,而不是基本数据类型(例如int等),
所以,使用对象数组初始化的时候,一定要先实例化数组引用,再实例化数组中每一个String的对象!
这很简单,也很基础,但实际问题经常遇到的是,直接用对象数组来得到一个封装方法的返回值,也就是String aaa[]=bbb();
其中bbb是一个返回String数组的方法,例如String自带的split函数。
由此可以看出,对象数组的引用也是把数组当成了一个类型,然后让aaa作为其的引用,
所以如果代码只是写 String str[ ]; 就没有了,这时候就像对象引用一样,只是声明了一下而已,本身还是空指针的。
对象数组的实例化也并非是new了两次,实际是第一次new出来一个数组,第二次是数组中的元素本身实例化。