You cannot subclass arrays. Although the syntax used with them is slightly different, they are objects (check with JLS ). There are not many APIs for them - except that Object (with toString() not doing what you expect, use Arrays.deepToString() for this; equals() and hashCode() are similar) have a length field. In addition, arrays are cloned. You can use array types only if the type of the target element is a supertype of the type of the source element - you can drop String[] to Object[] , but not vice versa. If you are sure that the objects in the array are of a particular type, you can use each element separately. String[][] is an array from String[] , so it differs from String[] because its elements are String arrays, not strings. You can create classes that provide similar functionality to arrays ( ArrayList does just that), but they will not be interchangeable with regular arrays.
source share