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

variáveis : tipo valor e tipo referencia

Bom dia, tudo bem?

Estou com uma dificuldade em entender as variáveis de tipo valor e referencia, dentro do conteúdo onde ele mostra a variável de "idade" que fica como "int idade=27" e um outra variável semelhante eu até entendi que os objetos sao diferentes por isso tem um retorno como false e os valores sao iguais, por isso o true. Já quando eu vejo o exemplo da contaDaGabriela e contaDaGabrilaCosta eu me perco todo, algum pode me dar uma ajuda? kk

3 respostas

Olá Isac!

Quando se faz a comparação de valores, os valores de duas variáveis inteiras (neste caso) ou outros tipos primitivos, os valores que são atribuídos à variável são comparados diretamente. Isso acontece porque o tipo int tem um valor atribuído a ele. Mas quando vai comparar a contaDaGabriela e contaDaGabrielaCosta, essa comparação é feita referente ao endereço de memória em que os objetos estão alocados. Quando você atribui um novo objeto de uma classe (usa a palavra new), você está associando para essa variável apenas o caminho desta variável na memória.

Neste segundo caso, usando contaDaGabriela == contaDaGabrielaCosta, você está comparando se as referências aos objetos são iguais, mas quando você usa o new, você cria outro objeto na memória, outra referência.

Mas se você comparar contaDaGabriela.Conta == contaDaGabrielaCosta.Conta terá o resultado true, pois está comparando os valores que está dentro da propriedade Conta ao invés do endereço de memória dos objetos.

Segue alguns códigos simples e os resultados:

Ah, os resultados que aparecem algo como ApenasParaTestar.teste são o namespace e o nome da classe. O Guilherme mostrará mais pra frente no curso como faz para trazer uma referência sobre o objeto está alocado na memória .

Espero ter ajudado!

Bons estudos!

Bom dia Fabiano, tudo bem?

Consegui entender bem a explicação que foi a escrita, mas acabei me confundindo no código um pouco, nele você fez a comparação entre as variáveis onde apenas as que tem valor mesmo no caso a que tem o "int" estão dando true?

solução!

Isso mesmo.

Usei apenas int, mas para dar true, os tipos precisam ser iguais também (claro, neste tipo de comparação com valores).

A string "18" é diferente do valor inteiro 18.

E onde deu o valor true está comparando dois valores inteiros de dois objetos diferentes.

Sugiro que faça alguns testes para comparar valores, tipos, objetos para entender melhor o que é igual e o que é diferente :)