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

Pode desenhar? Por que eu não entendi essa parte da aula

Não entendi muito bem essa lógica.

int primeiro = 5;
int segundo = 7;
segundo = primeiro;
primeiro = 10;

// quanto vale o segundo?

System.out.println(segundo);

As linguagens de programação trabalham de formas diferentes dependendo do uso de um símbolo específico, ou da existência de alguma referência, e por aí vai. Estas variáveis do tipo primitivo são trabalhadas com o valor do conteúdo, da variável, então, quando copiamos 5 para dentro de segundo, e depois copiamos 10 para primeiro, a linha segundo = primeiro; não diz nada.

Quando se faz uma atribuição no Java, não se diz que uma variável sempre segue a outra, e sim que estamos copiando e colando valores. Deste modo, primeiro = 10; não surtirá efeito para segundo. Confirmaremos isto rodando a aplicação, pois continuaremos recebendo 5.


4 respostas

O certo seria "quando copiamos 7 para dentro de segundo", o texto da explicação está errado.

Essa explicação realmente ficou bem confusa, também tive dificuldade em entender a explicação.

Mas, basicamente, o que está querendo dizer é que quando atribuimos um valor para as variáveis de tipo primitivo, esses valores são passados como uma cópia (e não por referência como é o caso de objetos, visto mais para a frente no curso).

Ou seja:

int primeiro = 5; // primeiro vale 5
int segundo = 7; // segundo vale 7
segundo = primeiro; // estou falando que segundo vai valer 5 (que é o valor de primeiro)
primeiro = 10; // primeiro vai valer 10 agora

No fim das contas, primeiro vale 10 e segundo vale 5.

solução!

Olá Israel, tudo bem?

O que acontece é que ele trabalha por linhas, então eu postar o código comentado sobre o que está acontecendo

//A variável primeiro recebe o valor de 5 
int primeiro = 5;
//A variável segundo recebe o valor de 7
int segundo = 7;
/*A variável segundo, que é 7, recebe o valor da variável primeiro, que é 5,
logo a variável segundo é 5 */
segundo = primeiro;
//A variável primeiro recebe o valor 10
primeiro = 10;

// quanto vale o segundo?
//Imprime o valor da variável segundo
System.out.println(segundo);

O que acontece é que o processo ocorre de linha em linha, ou seja, primeiro ele atribuiu o valor 5 na variável primeiro, depois o valor 7 na variável segundo, então ele pegou o valor da variável primeiro e igualou na variável segundo, por fim, ele alterou o valor da variável primeiro. O valor da variável segundo é 5 porque foi este valor que ela recebeu da variável primeiro naquele momento e porque ela não foi alterada novamente.

Espero que tenha lhe ajudado :)

Entendi, então se eu quiser atribuir novamente, eu teria que colocar depois de "primeiro = 10" , "segundo = primeiro", certo? Pra imprimir que segundo é igual a 10, no caso. Obrigado.

Israel, exatamente isso, teria de atribuir novamente que a variável segundo é igual a variável primeiro :)