Existem quatro escopos de variáveis: variáveis estáticas (que são criadas quando a classe é carregada, sobrevivendo enquanto a classe continuar carregada na JVM), variáveis de instância (que são criadas quando uma nova instância é criada, e duram até essa instância ser removida), variáveis locais (que permanecem enquanto o método que as contém estiver sendo executado) e variáveis de bloco (que permanecem enquanto o bloco estiver sendo executado).
import java.util.Date;
public class Escopo {
//variável estática
static int contador = 0;
//variável de instância
String nome = "";
{
//variável de bloco
Date dtNasc = new Date();
}
void test() {
//variável local
String cpf = "000.000.000-00";
}
}
A razão mais comum para ocorrer erro de escopo é quando uma variável é acessada fora do seu escopo. Abaixo três exemplos desse tipo de erro:
· Acessar variáveis de instância a partir de métodos estáticos;
public class Erros {
int cont;
public static void main(String[] args) {
/* Erro - não é possível acessar
* variáveis de instância a partir
* de métodos estáticos */
x = 5;
}
}
· Acessar variáveis locais a partir de outro método;
public class Erros2 {
void teste() {
int x = 5;
int y = 10;
teste2();
}
void teste2() {
/* Erro - um método não pode
* acessar as variáveis locais
* de outro método */
x = 50;
}
}
· Utilizar uma variável de bloco depois que o código de bloco já foi executado.
public class Erros3 {
void teste() {
for (int i = 0; i < 10; i++) {
int cod = 1;
if (cod == 1)
cod++;
}
/* Erro - não é possível acessar uma
* variável de bloco depois que o
* bloco terminou a execução */
System.out.println(cod);
}
}
Fonte: SCJP Sun Certified Programmer for Java 6 Study Guide
0 comentários:
Postar um comentário