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
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.