1
resposta

Resultado diferente a da aula

Galera, quando coloco pra imprimir o resultado da variavel que recebe a referencia o retorno é um pouco diferente a do professor. O dele retorna o nome da classe Conta@15db9742 ja a minha valor do xbytebank.Conta@53bd815b

Pergunta,

1º Porque a do professor sai com apenas Conta@ enquanto a minha xbytebank.Conta@ ? 2º O que significa o @ "@15db9742" ? 3º O que significa os numeros 15db9742 "@15db9742" ?

professor.

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

Minha.

package bytebank;

public class TesteDeReferencias {
    public static void main(String[] args) {
        Conta x = new Conta();
        x.saldo = 200;
        System.out.println(x.saldo);

        Conta y = x;
        System.out.println("valor do x" + x);
        System.out.println("valor do y" + y);

    }
}

Resultado

valor do xbytebank.Conta@53bd815b
valor do ybytebank.Conta@53bd815b
1 resposta

Olá Thailan

Pra responder essas questões, é preciso entender alguns tópicos que virão mais pra frente nos cursos de Java. Então vou te responder aqui, mas fique tranquilo se não entender muito bem algo do que eu escrever, beleza? Conforme for avançando nos estudos, os conceitos ficarão mais claros.

O primeiro ponto é:

System.out.println(primeiraConta), vai imprimir na tela o resultado de primeiraConta.toString().

toString() é um método que retorna uma String que representa o objeto. Por padrão, ele retorna uma String no padrão:

NomeCompletoDaClasse@NumeroMagico

Aqui, podemos analisar a primeira parte e responder sua primeira questão. Seu código foi criado dentro de um pacote (será a primeira linha do arquivo Conta.java):

package bytebank;

O nome do pacote, faz parte do nome completo da classe que está sendo impressa na tela. Portanto a sua chamada imprime "bytebank.Conta".

A classe escrita pelo professor Paulo, não está inserida em nenhum pacote, por isso imprime apenas "Conta" no console.

Agora sobre a segunda pergunta. Ela é mais complicada de entender. Sendo bem direto, o "53bd815b" do seu exemplo é uma representação hexadecimal do hashcode (hashcode é um método que será abordado no curso sobre Generics, no capítulo sobre conjuntos).

Agora vc queria saber exatamente o que significa esse número. Essa resposta não temos como cravar, pois ela depende da implementação da JVM. Nós costumamos dizer por força de expressão que o valor representa o endereço de memória do objeto. Pode até ser que seja, mas pode ser que não, depende da implementação da JVM. A única coisa que sabemos é que esse número sempre será o mesmo se chamado pro mesmo objeto. Mas aí é um assunto um pouco avançado pra esse ponto do curso.