Você está na página 1de 9

Área de domínio das variáveis

Existe uma diferença importante entre as instruções e as declarações de


variáveis. As instruções têm que estar sempre dentro de um método,
enquanto que a declaração de variáveis pode estar dentro ou fora de um
método. Para alem disso, é importante notar que um método não pode
utilizar variáveis declaradas noutros métodos. Variáveis locais
•Variáveis declarados dentro de um método chamam-se   locais. Eles
podem ser utilizados somente dentro do método onde foram declaradas.
•Uma   variável local é criada sempre que o método é activado e
destruída quando ele termina a sua execução.
•É   permitido utilizar os mesmos nomes para diferentes variáveis no
mesmo programa em diferentes métodos (mas não é a boa prática).
Ainda que tenham o mesmo nome, trata-se de variáveis diferentes,
localizadas em espaços de memória separados. O exemplo a seguir
ilustra este facto.

1
public class AreaDominio_VarLocais { public
static void main(String args[])
{ int v = 50;
System.out.println("V= "+v+" antes da chamada");
muda();
System.out.println("V= "+v+" depois da chamada");
}
public static void muda()
{ int v = 100;
System.out.print("V="+v+" dentro do metodo muda");
}
}
O output será:
V= 50 antes da chamada
V= 100 dentro do metodo muda
V= 50 depois da chamada

2
Variáveis globais
Variáveis declarados no início da execução do programa, fora de qualquer
método, chamam-se globais. Eles podem ser utilizados em qualquer método
e são destruídas quando o programa termina. Não é boa prática declarar todas
as variáveis como globais.
public class AreaDominio_VarGlobais
{ static int v;
public static void muda()
{ v = 100;
System.out.println("V= "+v+" dentro do metodo muda");
}
public static void main(String[] args)
{ v = 50;
System.out.println("V= "+v+" antes da chamada");
muda();
System.out.println("V= "+v+" depois da chamada");
}
}

3
O output será: V= 50 antes da chamada
V= 100 dentro do método muda
V= 100 depois da chamada

Analise exemplo a seguir:


public class AreaDominio_VarGlobais2
{ static int v;
public static void main(String[] args)
{ v = 50;
System.out.println("V= "+v+" antes da chamada");
muda();
System.out.println("V= "+v+" depois da chamada");
}
public static void muda()
{ int v = 100;
System.out.println("V= "+v+" dentro do metodo muda");
}
}
4
O output será: V= 50 antes da chamada
V= 100 dentro do método muda
V= 50 depois da chamada

Nota a diferença no output deste programa.

Passagem de parâmetros
Em Java, a passagem de parâmetros de tipos predefinidos (int, float,
boolean, etc.) é feita por valor, que significa que não é o parâmetro real que
é passado ao método, mas apenas o seu valor. Este tipo de passagem implica
que o valor da variável fica inalterável após a execução do subprograma,
independentemente das alterações feitas. Exemplo:
public class Exemplo
{
public static void muda(int valor)
{ valor = 20;
} public static void main(String[]
args)
{ int x = 10; //cria variável x e inicializa-a

5
muda(x); //chamada do método muda com passagem de parâm. x
System.out.println("O conteúdo da variavel x= "+x); }
}
O output será:
O conteudo da variavel x= 10
A execução deste programa começa pelo subprograma main(), como é
habitual. Após de inicialização da variável x com o valor 10 é invocado o
método muda(), tendo como parâmetro real a variável x. Este parâmetro
corresponde ao parâmetro formal valor. Durante a execução do método
muda() a variável valor, inicialmente tendo o valor 10, passado na
hora de chamada, recebe o novo valor 20.

Ao terminar a execução do muda(), o controlo é devolvido ao programa


chamador, que executa a instrução a seguir, visualizando o valor da
variável x que ficou inalterado. Isso acontece porque o valor da variável
x que é passado ao subprograma e não a própria variável x.

6
Valor de retorno
Todos os métodos até agora considerados não devolvem qualquer
resultado ao método que faz a sua chamada. Este facto é confirmado
pela presença da palavra reservada void no cabeçalho.
Quando é necessário que o método devolva um valor que calculou, a
palavra void deve ser substituída pelo tipo de resultado que o método
deve devolver.
Este programa testa o método chamado cubo() que devolve o cubo
dum valor do tipo byte passado como parâmetro:
public class TestarCubo
{ public static void main(String[] args)
{ for (byte i = 1; i<=5; i++)
System.out.println (i + "\t"+ cubo(i));
}
public static int cubo (byte n)
{ return n*n*n;
7
}
}
O output será:
1 1 O método main contém o ciclo for que invoca 5 vezes
2 8 o método println(). Por sua vez, o método println
3 27 invoca o método cubo(), passando o valor do argumento i
4 64 para o parâmetro n. O cabeçalho (linha 8) indica que o
5 125 método cubo() devolve um resultado do tipo int e recebe
um parâmetro n do tipo byte.

8
Referência bibliográfica:

António José Mendes; Maria José Marcelino.


“Fundamentos de programação em Java 2”. FCA. 2002.

Carriço, José; Carriço, António.


"Computadores, Tecnologias e sistemas de Informação- O Núcleo de Sistema“.
Centro de Tecnologias de Informação Ltd. Lisboa. 1997

Carriço, José; Carriço, António.


"Computadores, Tecnologias e sistemas de Informação- Periféricos, Internet e multimédia“.
Centro de Tecnologias de Informação Ltd. Lisboa. 1997.

Carriço, José; Carriço, António.


"Computadores, Tecnologias e sistemas de Informação- Tecnologias de Software“.
Centro de Tecnologias de Informação Ltd. Lisboa.1997.

Elliot Koffman; Ursula Wolz.


“Problem Solving with Java”. 1999.

John R. Hubbard.
“Theory and problems of programming with Java”. Schaum’s Outline series. McGraw-Hill.

H. Deitel; P. Deitel.
“Java, como programar”. 4 edição. 2003. Bookman.

Você também pode gostar