1
resposta

como regatar a conta antiga?

public class criaConta {
    public static void main(String[] args) {
        conta primeiraConta = new conta();
        primeiraConta.saldo = 200;
        primeiraConta.saldo += 100;
        System.out.println(primeiraConta.saldo);
        conta segundaConta = new conta();
        segundaConta.saldo = 7000;
        System.out.println(segundaConta.saldo);
        segundaConta = primeiraConta;
    }
}

a minha pergunta é como eu faria para resgatar o objeto que a segunda conta estava se referenciando, eu etria que salvar ele em alguma outra variavel ou teria outro geito?

1 resposta

Olá Gabriel,

Para objetos o java faz referência a um espaço na memória, e esse espaço na memória guarda o objeto com seus valores, logo a variável primeira conta está fazendo referência a um espaço na memória (exemplo: 01x123) que contém um objeto do tipo Conta, e a segundaConta faz referência a outro espaço na memória (exemplo: 01z8783) contendo outro objeto Conta totalmente diferente.

Quando você atribui a segunda conta para o mesmo espaço de memória da primeira conta, segundaconta = 01x123 -> Conta com saldo 300. Você perde a referência antiga de vista, o ideal seria utilizar uma outra variável para guardar esse espaço na memória (exemplo: 01z8783) para não perder o mesmo.

Espaços na memória que não são utilizado, a JVM utiliza um recurso chamado Gabarge Collector que seria tipo uma lixeira de objetos inuteis do java, ou seja aqueles que não são mais utilizados e que precisam ser apagados para liberar espaço na memória para não atrapalhar no desempenho da máquina. Então quando você perde esse espaço na memória de vista, então você deixará o gabarge collector entrar em ação mais na frente excluíndo tudo que existe nesse espaço de memória.