Olá Tiago, tudo certo?
Entendi a sua dúvida e ela é bem recorrente para quem esta começando com orientacao a objetos.
Isso acontece porque em Java o métodotoString()
é chamado quando voce tenta imprimir algum objeto. O que esse método por padrao faz é retornar uma representacao de string do objeto.
Utilizando o seu exemplo de saída, Conta
é o nome do objeto, @
faz a união da string e 6ff3c5b5
é o codigo hash do objeto.
Essa saída feia esta saindo dessa forma porque a Conta é um objeto que voce mesmo criou e nao implementou o método toString() para dizer ao Java o que retornar quando alguem tentar imprimir esse objeto. Caso voce queira mudar esse comportamento padrao voce pode sobrescrever este método dizendo o que voce quer que seja mostrado. Ex.:
@Override
public String toString() {
return "Testando meu proprio toString";
}
Caso esteja se perguntando também, os objetos padroes do Java ja possuem essa implementacao pronta, cada um com a sua particularidade.
E se tiver com duvida em relacao ao @Override e o conceito de sobrescrita, não se preocupe, esses termos serao abordados mais a frente na orientacao a objetos.
Links que podem lhe ajudar a entender melhor o assunto:
https://www.ti-enxame.com/pt/java/como-faco-para-imprimir-este-objeto-java-sem-obter-sometype-2f92e0f4/1052796090/
https://www.guj.com.br/t/como-usar-o-tostring-e-para-que-serve-como-e-chamado-resolvido/56031/3
Documentacao do Java sobre o toString(): https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()
Qualquer duvida estou a disposicao. Abracos