java数组分为两种,基本数据类型数组和对象数组.

package test;
public class Test {
    private int x = 0;
    public Test() {
        x = 1;
        print();
    }
    public Test(int a) {
        x = a;
        print();
    }
    public void print() {
        System.out.print(x);
    }
    public static void main(String[] args) {
        //基本类型的初始化:
        int[] q=new int[10];
        int[] w={1,2,3,4,5,56};//静态初始化
        q[1]=1;//正确
        System.out.print(q[0]);//默认为零
                                                                                     
        //对象数组初始化:
        Test[] e ={new Test(1),new Test(2),new Test(3)};//静态初始化
        e[1].print();
                                                                                     
        Test[] t = new Test[10];
        t[1].print();// 错误,未初始化
        t[1] = new Test();
        t[1].print();// 正确,已初始化
        for (int i = 0; i < 10; i++)// 动态初始化
        {
            t[i] = new Test();
        }
                                                                                     
        Test[] p;
        p[1]=new Test();//错误,p未初始化;
    }
}

对于对象数组的Test[] t=new Test[10],这里的t并未申请10个Test的存储空间,只是说明t是含10个Test对象的数组对象,后面使用t[n]时还得自己new Test(..)才行,总之Test[] t=new Test[10]可以当做一个整体,声明t一个含10个Test对象的数组,但至于Test是否初始化,t无处知晓.