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;
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;
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.
Comments
2 Comments
Ó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.
Oi Adriano, fico muito feliz que tenha gostado do artigo. Obrigado.
Leave a Comment