A quick difference:
A classic array: Easy to use, but can't grow dynamically.
An Array Class: An class with static utility method
An ArrayList class: An dynamic array list.
Don't forget that arrays can store primitives whereas ArrayLists cannot - the closest they get to storing primitives is storing wrapper objects (Integer etc) in combination with auto-boxing.