Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Reposta do teste

Boa tarde, No exercício temos o seguinte teste:

public class Teste {

    public static void main(String[] args) {
        Produto p1 = new Produto("Caneta", 1.50);
        Produto p2 = p1;
        p2.setPreco(2.00);
        System.out.println(p1.getPreco());
    }
}

E pergunta o que será impresso ao rodar a classe teste colocando como opção correta 2.00 sendo que a opção correta é 1.50. Na questão está perguntando o que será impresso que é o preço de de p1, logo o preço continua 1.50 . Se tivessem colocado p2.getPreco() dentro do System.out.println, a resposta seria 2.

2 respostas

Oi Graziela! Tudo bem?

A opção correta é 2.00 mesmo...

O que acontece é que existem as referências e os objetos. As referências são o que aparece antes do =, quando declaramos uma variável que representará um objeto. Já os objetos são aqueles criados com new. As referências e os objetos ficam em lugares diferentes da memória, por isso dizemos que as referências apontam para os objetos, elas guardam o endereço deles nessa parte diferente da memória.

No caso do exercício, primeiro cria-se uma referência p1, que guarda o endereço de new Produto(). Porém, cria-se a referência p2 apontando para a referência p1. Logo, as duas variáveis apontam para o mesmo objeto na memória. Assim, todas as alterações que realizarmos utilizando p2 também irão aparecer em p1, já que são a mesma coisa.

Por isso, como mudamos o preço de p2, o preço de p1 também é alterado.

Espero ter ajudado! Qualquer dúvida estou à disposição.

Abraços e bons estudos!

solução!

ah tudo bem, obrigada! eu fiz o teste denovo e realmente deu 2 o resultado