没有二次分配内存吧!
Employee[]  staff =new Employee[3]; 
这时候只是说明了staff是元素类型为Employee,长度为3的数组;并没有真正分配三个Employee所需的空间:
     staff-> __________
   staff[0]   |_________|
   staff[1]   |_________|
   staff[1]   |_________| 这是只分配了这些空间,每个空间都只能存储一个指向Employee对象的引用; 此时,值均为null;
当执行staff[0]= new Employee(...)后:
     staff-> __________    ___________
   staff[0]   |_xxxx____|-> |____yyxx__| Exployee对象的空间;
   staff[1]   |_________|
   staff[1]   |_________| 
 staff[0]中的xxxx代表指向Exployee的引用(或叫指针);现在才真正为Exployee 的对象分配了空间!
初学,不正确的请高手指教! 

解决方案 »

  1.   

    Employee[]  staff =new Employee[3];  是分配内存,但只是创建了一个数组,一个句柄的数组,但每个句柄还都没有指向任何对象,而staff[0]=new Employee(....)正是为其中的一个句柄指定对象的,这一句中分配的是一个新的对象的空间,并把这个对象的句柄赋给数组的一个元素。
      

  2.   

    我感觉Employee[]  staff =new Employee[3]; 这只是分配了一个指针,里面并没有具体内存,等到staff[0]=new Employee(....)才分配内存
      

  3.   

    java没有指针的概念,有的时候看到对象变量还是需要区分实例与类,才能理解,不像C++(新手上路,可能说的不对)