quinta-feira, 8 de janeiro de 2015

Fundamentos de Java - Escopo de Variáveis Locais

Escopo: Termo utilizado para se referir ao tempo de vida de uma ou mais variáveis.

Variáveis: São nomes atribuídos à endereços na memória de um computador onde se guardam dados.
A declaração de uma variável consiste em dar um nome para a posição de memória a ser usada e especificar qual tipo de dado a guardar na memória.

Quando nos referimos ao escopo de variáveis em Java, temos basicamente três tipos, sendo elas:
  • Variáveis locais
  • Variáveis de instância ou de objeto
  • Variáveis estáticas
Neste post, vamos tratar somente do escopo das variáveis locais.
Variáveis Locais

Identificamos uma variável local, quando declaradas dentro de métodos ou construtores. Neste caso, elas possuem um tempo de vida até o término do bloco de instrução.

Vejamos o exemplo abaixo: 

1:  public class Exemplo {  
2:       public int valor1 = 0;  
3:       public void adicionaValor(int x) {  
4:            valor1 = valor1 + x;  
5:       }  
6:       public void subtraiValor(int y) {  
7:            valor1 = x - y; // Erro de compilação!  
8:       }  
9:  }  

Após a definição da classe, declaramos e inicializamos a variável valor1. Em seguida declaramos um método adicionaValor(int x), que possui uma variável local x. Esta variável local tem seu tempo de vida limitada à execução do método, ou seja, após todas as linhas do bloco de instrução (delimitados por { e }) serem executadas, a variável x deixa de existir.

Um exemplo disso está no método abaixo, chamado subtraiValor(int y), que também possui uma variável local y. Na operação utilizada como exemplo temos o seguinte:

1:  valor1 = x - y;  
Conforme mencionado acima, o escopo da variável local x acaba no final do bloco de instrução do método adicionaValor(int x), sendo assim, não faz sentido ele estar fazendo parte desta operação. Logicamente teremos um erro de compilação, informando que a variável x não existe.

Um outro exemplo de variável local é sua utilização dentro de um bloco de instrução condicional ou de repetição. Vamos ver um exemplo com o comando IF:

1:  public class Exemplo{  
2:       public int valor1 = 1;  
3:       public void metodo1() {  
4:            if (valor1 > 0) {  
5:                 int valor2 = 10;  
6:            }  
7:            System.out.println(valor2); // Erro de compilação!  
8:       }  
9:  }  

Neste exemplo, temos o metodo1() que inicia uma condição verificando se a variável valor1 é maior que 0, se sim, ele declara e inicializa uma variável local valor2 dentro do bloco de instrução condicional IF. Logo após é realizado a impressão da variável valor2 e é gerado um erro de compilação. Ocorreu isso, por quê? A variável valor2 faz parte do escopo do IF e após o término de seu bloco de instrução, ela deixa de existir, mesmo fazendo parte do mesmo método.

Nenhum comentário:

Postar um comentário