Programação Java: Observando Âmbito dentro de um bloco
desenvolvedores Java muitas vezes experimentam problemas de descobrir por que um aplicativo está se comportando bem quando se deparam com um problema de acesso bloco. A orientação básica é que qualquer variável criada dentro de um bloco é definido apenas dentro desse bloco. Por exemplo, quando você olha para o código a seguir, você vê um cenário de acesso de blocos típico.
// Cria uma variável dentro de um block.for (int i = 0- i lt; 10- i ++) // exibe o valor desse variable.System.out.println ( "O valor de i é:" + i) - // acesso fora do bloco não work.System.out.println ( "The valor de i é: "+ i) -
O exemplo mostra o valor de i dentro do loop (um tipo de bloco), sem problema. No entanto, a tentar aceder i fora do bloco não é aceitável porque a variável não está definida. O compilador vai pegar esse erro.
Outro possível problema ocorre quando uma variável é definida na aplicação e também dentro de um bloco. Porque esta situação é susceptível de criar problemas, versões mais recentes do Java não vai permitir que o tipo de código mostrado aqui:
void main (String [] args) public static {// Definir um variable.int i = 0 - // Criar uma variável dentro de um block.for (int i = 0- i lt; 10- i ++) // exibe o valor desse variable.System.out.println ( "O valor de i é:" + i) - // acesso fora do bloco não work.System.out.println ( "The valor de i é: "+ i) -}
O compilador nem sempre vai impedi-lo de tiro no próprio pé. Em muitas situações, o desenvolvedor faz algo com a variável e não entende as consequências. Por exemplo, o seguinte código é perfeitamente legal em Java.
void main (String [] args) public static {// Definir um variable.int i = 0 - // Criar uma variável dentro de um block.for (i = 0- i lt; 10- i ++) // exibe o valor desse variable.System.out.println ( "O valor de i é:" + i) - // acesso fora do bloco não work.System.out.println ( "The valor de i é: "+ i) -}
O laço for exibe os valores de 0 a 9 por causa da condição dentro da para declaração de loop. A chamada final para System.out.println () exibe um valor de 10, não 0 ou 9 como alguns desenvolvedores poderia esperar.
A Parte I ++ da declaração ocorre, e, em seguida, a condição é avaliada, de modo que o valor final de I é de 10, 9 não porque tem que ser 10 a fim de que a condição a tornar-se falsa.
O ponto é que você deve considerar como um bloco trabalha com uma variável, a fim de determinar se você pode acessar a variável e que o valor irá conter na saída do bloco.