Array Declaration, Construction, and Initialization


  • Arrays can hold primitives or objects, but the array itself is always an object.
  • When you declare an array, the brackets can be left or right of the name.
  • It is never legal to include the size of an array in the declaration.
  • You must include the size of an array when you construct it (using new) unless you are creating an anonymous array.
  • Elements in an array of objects are not automatically created, although primitive array elements are given default values.
  • You'll get a NullPointerException if you try to use an array element in an object array, if that element does not refer to a real object.
  • Arrays are indexed beginning with zero.
  • An ArrayIndexOutOfBoundsException occurs if you use a bad index value.
  • Arrays have a length variable whose value is the number of array elements.
  • The last index you can access is always one less than the length of the array.
  • Multidimensional arrays are just arrays of arrays.
  • The dimensions in a multidimensional array can have different lengths.
  • An array of primitives can accept any value that can be promoted implicitly to the array's declared type;. e.g., a byte variable can go in an int array.
  • An array of objects can hold any object that passes the IS-A (or instanceof) test for the declared type of the array. For example, if Horse extends Animal, then a Horse object can go into an Animal array.
  • If you assign an array to a previously declared array reference, the array you're assigning must be the same dimension as the reference you're assigning it to.
  • You can assign an array of one type to a previously declared array reference of one of its supertypes. For example, a Honda array can be assigned to an array declared as type Car (assuming Honda extends Car).