Press enter to see results or esc to cancel.

Passagem por valor em Java – Parte 1 de 2

O que acontece quando uma variável é passada para um método? As variáveis primitivas e as variáveis de referência são tratadas da mesma forma? O que é um tipo primitivo? O que é um tipo de referência? Muitas perguntas, não é mesmo? Então vamos responder cada uma por vez.

Nesta primeira parte, iremos observar como a passagem por valor funciona com variáveis de tipo primitivo.

Tipos primitivos e a passagem por valor

Um tipo primitivo é pré-definido pela linguagem e seu nome é uma palavra reservada. A linguagem Java possui 8 tipos primitivos: byte, short, int, long, float, double, boolean e char.

Cada declaração de variável pode ser entendida como a criação de um copo do tamanho do seu tipo.

int x;

1

Criamos um copo com o nome x que consegue guardar valores do tamanho do tipo int. Ainda não colocamos nada dentro dele. Observe as atribuições a seguir:

int x = 10;
int y = x;

2

A linha 1 cria um copo com o nome x, de tamanho int, e o preenche com o valor 10.

A linha 2 cria um copo com o nome y, de tamanho int, e o preenche com o valor 10.

Percebam que o copo x não é afetado. Foi feita uma cópia do seu conteúdo para ser colocada em y. Ou seja, na linha 2 o Java copiou o conteúdo da variável x e colocou essa cópia dentro da variável y.

Isso é a Passagem por Valor!

 


int y = x;
Errado! Correto!
Coloque o copo x dentro do copo y Faça uma cópia do valor contido dentro do copo x e coloque essa cópia dentro do copo y

Qual é o valor da variável primitiva y depois de executar o código abaixo?

int x = 10;
int y = x;
x = 20;

O valor de y continua sendo 10.

x e y são dois copos diferentes e desconectados. Caso mais tarde você decida colocar outro valor em x, o valor que está dentro do copo y não será afetado.

Tipos primitivos e métodos

Qual é a saída do código a seguir?

public static void metodo1(int x) {
	x = 20;
}

public static void main(String args[]) {
	int y = 10;
	metodo1(y);
	System.out.println(y);
}

O metodo1 tem o seu próprio copo que se chama x. É o argumento do método. Quando esse método foi chamado, uma cópia do valor contido dentro do copo y foi colocada dentro do copo x. Um copo não se comunica com o outro e qualquer alteração no valor do copo x não terá efeito no valor do copo y. Portanto o valor que aparece na tela é 10.


As coisas ficam mais interessantes na segunda parte. Falaremos sobre controles remoto, televisores e a passagem por valor dos tipos de referência.

Passagem por valor em Java – Parte 2 de 2.

Tweet about this on TwitterShare on FacebookShare on LinkedInEmail this to someone
Comments

2 Comments

Adriano Neres

Ótimo artigo, Gustavo. Gostei da didática.
Este é um tópico que causa bastante confusão, inclusive em certificações, e você consegui trabalhá-lo de maneira bastante simples.

Parabéns.

Gustavo Zina

Oi Adriano, fico muito feliz que tenha gostado do artigo. Obrigado.


Leave a Comment