1
resposta

O compilador não exibe o resultado da compilação

O compilador não exibe o resultado da compilação quando executo ele exibe o endereço na memória desta forma:

2

11

Tamanho: 1

br.com.bytebank.banco.modelo.ContaCorrente@15db9742 br.com.bytebank.banco.modelo.ContaCorrente@6d06d69c br.com.bytebank.banco.modelo.ContaCorrente@7852e922

package br.com.bytebank.banco.teste.util;

import java.util.ArrayList;

import br.com.bytebank.banco.modelo.Conta;
import br.com.bytebank.banco.modelo.ContaCorrente;

public class Teste {

    public static void main(String[] args) {
        ArrayList lista = new ArrayList();

        Conta cc = new ContaCorrente(22, 11);
        lista.add(cc);

        Conta cc2 = new ContaCorrente(22, 22);
        lista.add(cc2);

        System.out.println(lista.size());

        Conta ref = (Conta) lista.get(0);
        System.out.println(ref.getNumero());

        lista.remove(0);

        System.out.println("Tamanho: " + lista.size());

        Conta cc3 = new ContaCorrente(22, 33);
        lista.add(cc3);

        Conta cc4 = new ContaCorrente(22, 44);
        lista.add(cc4);

        for (Object oRef : lista) {
            System.out.println(oRef);

        }

    }

}
1 resposta

Oi, Julio. Tudo bem?

Por padrão o método toString() exibe o hashcode (endereço da mamória) do objeto que chama o método que, no caso, foi referenciado internamente através do println.

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

Ou seja, a sua saída: classe + nome + @ + hashcode == br.com.bytebank.banco.modelo.ContaCorrente@15db9742

Para que você tenha a saída como a da aula, você precisa sobrescrever o método toString() na classe Conta, deixando dessa forma:

@Override
    public String toString() {
        return "Numero: " + this.numero + ", Agencia: " + this.agencia;
    }

Espero ter ajudado. Qualquer dúvida é só avisar!