Requisito previo: variables estáticas , palabra clave final
Variable estática: cuando el valor de una variable no varía, entonces no es una buena opción optar por una variable de instancia. En ese momento podemos agregar un modificador estático a esa variable. Cada vez que declaramos una variable como estática, a nivel de clase se crea una sola variable que se comparte con los objetos. Cualquier cambio en esa variable estática se refleja en las operaciones de otros objetos. Si no vamos a inicializar una variable estática, entonces, por defecto, JVM proporcionará un valor predeterminado para la variable estática.
Pero cuando declaramos una variable estática con el modificador final, debemos tener en cuenta las siguientes convenciones:
- Declarar variables solo como estáticas puede provocar cambios en sus valores en una o más instancias de una clase en la que se declara.
- Declararlos como final estático te ayudará a crear una CONSTANTE . Solo existe una copia de la variable que no se puede reiniciar.
Puntos importantes sobre la variable estática final:
- Inicialización de la variable Obligatorio : si la variable estática se declara como final, entonces tenemos que realizar la inicialización explícitamente, ya sea que la estemos usando o no, y JVM no proporcionará ningún valor predeterminado para la variable estática final.
// Java program to illustrate the behavior of
// final static variable
class
Test {
final
static
int
x;
public
static
void
main(String[] args)
{
}
}
Producción:
error: variable x not initialized in the default constructor
- Inicialización antes de cargar la clase : para la variable estática final, es obligatorio que realicemos la inicialización antes de que finalice la carga de la clase. Podemos inicializar una variable estática final en el momento de la declaración.
// Java program to illustrate that final
// static variable can be initialized
// at the time of declaration
class
Test {
final
static
int
x =
10
;
public
static
void
main(String[] args)
{
System.out.println(x);
}
}
Producción:
10
- Inicializar dentro de un bloque estático : también podemos inicializar una variable estática final dentro de un bloque estático porque debemos inicializar una variable estática final antes de la clase y sabemos que el bloque estático se ejecuta antes que el método main().
// Java program to illustrate that final
// static variable can be initialized
// inside static block
class
Test {
final
static
int
x;
static
{
x =
10
;
}
public
static
void
main(String[] args)
{
System.out.println(x);
}
}
Producción:
10
Además de los métodos mencionados anteriormente, si intentamos inicializar una variable estática final en cualquier otro lugar, obtendremos un error de tiempo de compilación.
// Java program to illustrate // that we can't declare // final static variable // within any non-static blocks or methods class Test { final static int x; public static void m() { x = 10; } public static void main(String[] args) { System.out.println(x); } }
Producción:
error: cannot assign a value to final variable x
Implementación de la variable estática final
class MainClass { final static String company = "GFG"; String name; int rollno; public static void main(String[] args) { MainClass ob = new MainClass(); // If we create a database for GFG org // then the company name should be constant // It can’t be changed by programmer. ob.company = "Geeksforgeeks"; ob.name = "Bishal"; ob.rollno = 007; System.out.println(ob.company); System.out.println(ob.name); System.out.println(ob.rollno); } }
Producción:
error: cannot assign a value to final variable company
Este artículo es una contribución de Bishal Kumar Dubey . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA