Requisito : 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 acudir a la variable de instancia. En ese momento podemos añadir el modificador static a esa variable. Cuando declaramos una variable como estática, entonces a nivel de clase se crea una única variable que se comparte con los objetos. Cualquier cambio en esa variable estática se refleja en las operaciones de los otros objetos. Si no vamos a inicializar una variable estática, entonces por defecto JVM proporcionará un valor por defecto para la variable estática.
Pero cuando declaramos una variable estática con modificador final entonces debemos tener cuidado de las siguientes convenciones:
- Declarar las variables sólo como estáticas puede llevar a cambiar sus valores por una o más instancias de una clase en la que se declara.
- Declararlas como estáticas finales le ayudará a crear una CONSTANTE. Sólo existe una copia de la variable que no puede ser reinicializada.
Puntos importantes sobre la variable estática final:
- Inicialización de la variable Obligatoria : Si la variable estática declarada como final, entonces tenemos que realizar la inicialización explícitamente si estamos usando o no y JVM no proporcionará ningún valor por defecto para la variable estática final.
class
Test {
final
static
int
x;
public
static
void
main(String args)
{
}
}
Salida:
error: variable x not initialized in the default constructor
- Inicialización antes de la carga de la clase : Para la variable estática final, es obligatorio que realicemos la inicialización antes de la finalización de la carga de la clase. Podemos inicializar una variable estática final en el momento de la declaración.
class
Test {
final
static
int
x =
10
;
public
static
void
main(String args)
{
System.out.println(x);
}
}
Salida:
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 del método main().
class
Test {
final
static
int
x;
static
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Salida:
10
Aparte de los métodos mencionados, si intentamos inicializar una variable estática final en cualquier otro lugar entonces obtendremos un error en tiempo de compilación.
class
Test {
final
static
int
x;
public
static
void
m()
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Salida:
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();
ob.company =
"Geeksforgeeks"
;
ob.name =
"Bishal"
;
ob.rollno =
007
;
System.out.println(ob.company);
System.out.println(ob.name);
System.out.println(ob.rollno);
}
}
Salida:
error: cannot assign a value to final variable company
Este artículo es una contribución de Bishal Kumar Dubey. Si te gusta GeeksforGeeks y quieres contribuir, también puedes escribir un artículo en contribute.geeksforgeeks.org o enviarlo por correo a [email protected]. Verás cómo tu artículo aparece en la página principal de GeeksforGeeks y ayudarás a otros Geeks.