When you declare a non-primative variable (i.e. object), it's capable of pointing to an instance of the object type declared.
Until you instantiate an instance of the object using the "new" keyword and assign it to the variable, the variable is null.
In the case of an array, you declare it and you instantiate it. So far so good. The variable points to an instance of the array type you declared.
The DIFFERENCE here is that an ARRAY IS A COLLECTION OF VARIABLES, you simply access them via an index (i.e. objects). When the array is instantiated it doesn't fill all the variables/buckets it contains. It simply provides you with variables capable of receiving/holding pointers to the instances.
Whenever you are using an array of objects you usually go through a 3 step process where you declare it, instantiate it and you fill it with instances of the type it was declared to hold.
[ May 18, 2005: Message edited by: Byron Estes ]