image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
André
André06/07/2024 17:41
Compartilhe

Atribuição em Java: Diferença entre Tipos Primitivos e Objetos.

  • #Java

Existe uma pequena diferença na atribuição e referencia de valores na linguagem Java

Tipos Primitivos

Em Java, quando você atribui um valor a uma variável de tipo primitivo, o valor é copiado diretamente. Isso significa que a nova variável tem seu próprio espaço em memória e qualquer alteração feita a uma variável não afeta a outra.

int a = 5;
int b = a; // b atribuindo o mesmo valor de a
System.out.println("valor da variável A: " + a);
System.out.println("valor da variável B: " + b);

Nesse primeiro momento serão impressos o valor 5 para ambas as variáveis A e B .

b = 10; // atribuindo outro valor para b
System.out.println("valor da variável A: " + a);
System.out.println("valor da variável B: " + b);

Após fazer uma nova atribuição no valor de B, a variável A permanece com o valor de 5, porém em B será impresso o novo valor, 10.

Isso ocorre pois se tratando de Tipos Primitivos, as variáveis A e B são independentes após uma nova atribuição.

Objetos

Para objetos, a situação é diferente. Quando você atribui um objeto a outra variável, o que é copiado é a referência ao objeto, e não o objeto em si. Isso significa que ambas as variáveis apontam para o mesmo objeto na memória. Qualquer alteração feita ao objeto através de uma variável será visível através da outra.

Para esse exemplo vamos criar uma classe chamada PESSOA com um método construtor e um método toString:

public class Pessoa {

  String nome;

  public Pessoa(String nome) {
      this.nome = nome;
  }

  @Override
  public String toString() {
      return this.nome.toString();
  }

}

Na classe MAIN vamos escrever o seguinte:

Pessoa pessoa1 = new Pessoa("Bruna");
Pessoa pessoa2 = pessoa1;

System.out.println("Pessoa1 é: " + pessoa1);
System.out.println("Pessoa2 é: " + pessoa2);

Acima atribuímos o nome "Bruna" para o objeto pessoa1, em seguida atribuímos ao objeto pessoa2 o objeto pessoa1, e com isso será impresso o mesmo valor para ambos.

Agora vamos alterar o valor atribuído ao objeto pessoa2 o nome de "Julia" :

pessoa2.nome = "Julia";
System.out.println("Pessoa1 agora é: " + pessoa1);
System.out.println("Pessoa2 agora é: " + pessoa2);

Em ambos os objetos serão impressos o valor alterado na String para "Julia" pois pessoa1 e pessoa2 estão fazendo referência de memória ao mesmo objeto do tipo PESSOA.

Resumo:

  • Tipos Primitivos: Atribuição copia o valor em memória. Alterações são independentes.
  • Objetos: Atribuição copia a referência em memória. Alterações em uma referência afetam todas as referências ao mesmo objeto.

Compartilhe
Comentários (0)