Java de programación: la observación de alcance dentro de un bloque
Los desarrolladores de Java a menudo experimentan problemas de averiguar por qué una aplicación se está portando mal cuando se enfrentan a un problema de acceso del bloque. La directriz básica es que cualquier variable se crea dentro de un bloque se define sólo dentro de ese bloque. Por ejemplo, cuando nos fijamos en el código siguiente, se ve un escenario típico de acceso del bloque.
// Crear una variable dentro de una block.for (int i = 0- i lt; 10- i ++) // mostrar el valor de esa variable.System.out.println ("El valor de i es:" + i) - // El acceso fuera del bloque no hace work.System.out.println ("El valor de i es: "+ i) -
El ejemplo muestra el valor de i dentro del bucle for (un tipo de bloque) sin problema. Sin embargo, al intentar acceder i fuera del bloque no es aceptable porque la variable no está definida. El compilador detectará este error.
Otro problema potencial se produce cuando una variable se define en la aplicación y también dentro de un bloque. Debido a que esta situación puede crear problemas, las nuevas versiones de Java no permitirá que el tipo de código que se muestra aquí:
main (String [] args) void estáticos públicos {// Definir un variable.int i = 0 - // Crear una variable dentro de una block.for (int i = 0- i lt; 10- i ++) // mostrar el valor de esa variable.System.out.println ("El valor de i es:" + i) - // El acceso fuera del bloque no hace work.System.out.println ("El valor de i es: "+ i) -}
El compilador no siempre le impide pegarse un tiro en el pie. En muchas situaciones, el desarrollador hace algo con la variable y no entiende las consecuencias. Por ejemplo, el siguiente código es perfectamente legal en Java.
main (String [] args) void estáticos públicos {// Definir un variable.int i = 0 - // Crear una variable dentro de una block.for (i = 0- i lt; 10- i ++) // mostrar el valor de esa variable.System.out.println ("El valor de i es:" + i) - // El acceso fuera del bloque no hace work.System.out.println ("El valor de i es: "+ i) -}
El bucle for muestra los valores de 0 a 9 debido a la condición dentro de la declaración de bucle. La llamada final a System.out.println () muestra un valor de 10, no 0 o 9, ya que algunos desarrolladores podrían esperar.
El ++ parte I de la Declaración se produce, y luego se evalúa la condición, por lo que el coste final de i es 10, no 9, ya que tiene que ser 10 para que el estado se convierta en falsa.
El punto es que usted debe tener en cuenta cómo funciona un bloque con una variable con el fin de determinar si puede acceder a la variable y lo que el valor contendrá a la salida del bloque.