Very simple. If you have an ArrayList which is null, it is just a null object reference like any other (with a specific type assigned to it).
If you have an ArrayList of 100 null elements, then it is a fully instantiated ArrayList encapsulating 100 null object references.
Functionally, you can refer to any of those 100 null references without generating an exception. Whereas with a null ArrayList, any attempt to access a specific member of the list will generate an exception.
In practice, just as a backgrounder, it is generally a good idea to return an instantiated collection from any method that returns a collection. It enables calling code to generically enumerate the collection even if it contains zero instances of whatever it is supposed to contain. Of course, opinions may vary. ;-)
NullPointerExceptionwill be thrown deeper. But it actually depend on how you will usearrayList.nullvalues until you try to donull.something.