The terms “ArrayList” and “array” are essentially synonyms. They are the same thing.
ArrayLists are arrays
ArrayLists and arrays are different things
CorrectionHere is what's right.
Arrays are a special language feature in Java. They have special syntax (e.g.,
int for declaring the type “array of int”, or
a for “access element 3 of array a”).
ArrayList is a class, like any other class in Java. There is no special syntax for
So, the following code is wrong:
int a = new ArrayList<ArrayList<Integer>>();
You can write (using arrays):
int a = new int;
Or you can write (using ArrayLists):
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
It is a fact that Java arrays are a built-in language feature,
ArrayList is just some class in the standard library.
ArrayList class is an implementation of the abstract
and it implements that interface by internally using arrays to store the elements of the list.
OriginWhere could this misconception come from?
new Array(10) would allocate an array, which could then be accessed using the normal array access syntax.
Another possible source of this misconception might be prior knowledge on operator overloading, e.g., if a student already has seen C++.
ValueHow can you build on this misconception?
It is not at all unreasonable to assume that in an object-oriented language arrays are classes.
In Java, array types are types.
And classes are types.
The boundary between types and classes is a bit muddied.
E.g., you can get a
Class object that describes the type of an array:
int a = new int; Class c = a.getClass();
It is also not unreasonable to assume that classes
could not only define their own methods,
but also overload the language’s operators.
This can be done in other object-oriented languages like C++.
If a language supports operator overloading,
then a library class like
ArrayList probably would
overload the array-indexing operator
to provide the functionality that Java’s
provides in its