Olá.
Quando você quer criar um objeto Conta, o que você faz?
Se você criar somente a referência, não poderá utilizar o objeto, como no caso abaixo:
Conta account;
Com esse código criamos uma referência para a classe Conta, chamada account. A partir do momento que eu quiser usar essa variável, tenho que transformá-la em um objeto, logo devo criar uma instância da classe Conta (usando a palavra new):
Conta account;
account = new Conta();
Ou façamos direto:
Conta account = new Conta();
Agora, quando falamos de array, sabemos que cada posição do array é uma referência pra conta, veja só:
Conta[] accounts = new Conta[5];
// Note que esse 5 não é passado para um constutor. Nem usamos os parênteses nesse caso e sim colchetes, logo não é o construtor da classe. Nesse caso o colchetes indica o número de posições do array e o new indica que estamos instanciando um array.
Veja bem, no código acima eu criei 5 referências para a classe Conta, mas não instanciei nenhuma. Note que usando "new Conta[5]" estou instanciando um novo array, não os objetos da classe Conta. Para isso, preciso fazer:
accounts[0] = new Conta();
accounts[1] = new Conta();
accounts[2] = new Conta();
accounts[3] = new Conta();
accounts[4] = new Conta();
Sacou? Se você criar só o array sem instanciar, como já disseram acima, você não conseguirá usar os objetos nas posições do array. Claro que, se fosse array de int ou outro timo primitivo, não precisaria instanciar nada, assim como quando você cria variável do tipo int não precisa instanciar.
Para facilitar a criação dos objetos no array, sempre prefira usar um laço, obviamente.
[]'s.