2
respostas

Isso é uma referência ou uma instanciação de objeto?

No array do tipo ContaCorrente, ao fazer new estamos instanciando um objeto array? ou é um array do tipo/referência ContaCorrente? o que difere essa linha da posterior (cc1,cc2)? Seriam 3 objetos?

ContaCorrente[] contas = new ContaCorrente[5];

ContaCorrente cc1 = new ContaCorrente(22, 11);
ContaCorrente cc2 = new ContaCorrente(22, 22);
2 respostas

A primeira linha reserva parte de memória para guardar 5 objetos do tipo ContaCorrente, enquanto nas demais você está criando esses objetos que posteriormente podem ser guardados dentro de contas

Ou seja em ContaCorrente[] contas = vc tem um um objeto (variável) chamado contas do tipo Array cujo os elementos que ele aceita armazenar são do tipo ContaCorrente.

Em cc1 e cc2, são referencias a objetos do tipo ContaCorrente.

Grosseiramente falando new = Instancia (pois a referencia pode ser nula, então a instancia do objeto só passa a existir após o operador new.)

Então:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

PS. Tanto a referencia quanto a instancia possuem endereço e espaço reservado em memoria, porem a JVM abstrai isto do programador ela mesma gerencia isto pra nós.