Java comprende 5 bloques condicionales, a saber: si, cambiar, mientras, para y probar.
En todos estos bloques, si la condición especificada es verdadera, se ejecuta el código dentro del bloque y viceversa. Además, el compilador de Java no le permite dejar una variable local sin inicializar.
Al inicializar una variable local dentro de un bloque condicional, se deben tener en cuenta los siguientes 3 detalles:
1. Si la condición especificada es verdadera y se proporcionan ‘valores’ en la condición, el programa se compila correctamente.
2. Si la condición especificada es verdadera, pero se proporcionan ‘variables’ en la condición, obtenemos un error de compilación.
3. Si la condición especificada es falsa, obtenemos un error de compilación.
Los puntos anteriores son válidos tanto para variables locales de tipo primitivo como de referencia.
Ejemplo:
El siguiente código dará un error de compilación.
// Java program to demonstrate error if we // assign value to an uninitialized variable // only in if block. public class InitTesting { public static void main(String args[]) { int i = 100; int j; // Note that the condition is false if (i > 500) j = i + 5; System.out.println("j :" + j); } }
Output: prog.java:8: error: variable j might not have been initialized System.out.println("j :" + j); ^ 1 error
La condición en la sentencia if es falsa. Por lo tanto, la variable local ‘j’ nunca se inicializa. Por lo tanto, intentar hacer referencia a la variable no inicializada ‘j’ en la línea 8 genera un error de compilación.
Para evitar esto, inicialice su variable local a un valor predeterminado fuera del bloque condicional.
El siguiente código funciona bien-
// Java program to demonstrate that the above // error is gone if we initialize the variable. public class InitTesting { public static void main(String args[]) { int i = 100; int j = 0; // Note that the condition is false if (i > 500) { j = i + 5; } System.out.println("j :" + j); } }
Output: j :0
Además, en Java, los ‘valores’ se leen en tiempo de compilación. Pero, las ‘variables’ se leen en tiempo de ejecución. Por lo tanto, cuando las variables son parte de la condición y se inicializa otra variable dentro del bloque condicional, se produce un error de tiempo de compilación inesperado.
Ejemplo: Echa un vistazo al siguiente código:
// Java program to demonstrate error even if // condition is true. class Test { public static void main(String args[]) { int a = 90; int b = 80; int i; // The condition is true if (a > b) { i = a + 5; } System.out.println("i :" + i); } }
Output: prog.java:9: error: variable i might not have been initialized System.out.println("i :" + i); ^ 1 error
Da un error de compilación independientemente de que la condición sea verdadera o falsa porque Java no leyó las variables en el momento de la compilación y, por lo tanto, ‘i’ no se inicializa.
Por otro lado, esto no sucede si se especifican valores en lugar de variables.
// Java program to demonstrate that there is // no error if we constants in if condition. class Test { public static void main(String args[]) { int i; if (90 > 80) { i = a + 5; } System.out.println("i :" + i); } }
Output: i :95
Publicación traducida automáticamente
Artículo escrito por Mahek Sengar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA