I do like the flexibility of arralists sometimes you just don’t know the number of items you will have and whilst you could get around this buy initialising a larger array than necessary arraylists require no such additional code.
Do bear in mind that ints have to be initialised as Integer same with floats just something you have to be mindful of.
Essentially though an arraylist is either created empty or null, if its empty then you have to then fill it using add(). If it’s null you first have to initialise it ie make it empty. Of course you can create a null arraylist and set as another live array, although from recollection I may be wrong, doing so has the same limitation as setting an array to another array meaning that the arraylist will simply be a symbolic link to the original and will not in fact be a copy.
Again something to keep in mind
You can also have arraylists of arraylists arraylists of hashmaps or any other type of object that is normally handled in java.