Não vou falar termos técnicos, parar todo mundo compreender:
Primeira coisa: Array são diferentes de List, eles não se misturam, o primeiro é tipo um recipiente fixo para ti colocar tantas coisas dentro, o segundo é uma collection que podem aumentar ou diminuir dinamicamente, entendido esta parte?
Para 'iniciar' um array basicamente fazemos isto:
int[] myIntArray = new int[3];
Observem os colchetes.
Para 'iniciar' uma collection, list, basicamente fazemos isto:
ArrayList lista = new ArrayList();
Qual a diferença básica?
Pense, não temos pressa... isto mesmo gafanhoto!!!
Array tem colchetes e arraylist não tem. Agora observe a opção IV ( ArrayList[] lista = new ArrayList[]();) e veja que o examinador misturou array com arraylist, portanto, elimine-a e ficremos entre duas alternativas ( B e C), bom para resolver a partir de agora você deve ter algum conhecimento sobre trabalho com listas, entretanto sabendo de uma informação eliminamos 3 alternativas!
Para finalizar: podemos utilizar o comando da opção I, portanto:
GABARITO ALTERNATIVA B(I,II, III)