Prerequisito : variáveis estáticas, palavra-chave final
Variável estática: Quando o valor de uma variável não é variado, então não é uma boa escolha ir por exemplo, variável estática. Nesse momento podemos adicionar um modificador estático a essa variável. Sempre que declaramos variável como estática, então no nível de classe é criada uma única variável que é compartilhada com os objetos. Qualquer mudança nessa variável estática reflete para as outras operações dos objetos. Se não inicializarmos uma variável estática, então por padrão a JVM irá fornecer um valor padrão para a variável estática.
Mas quando declaramos uma variável estática com modificador final então devemos cuidar das seguintes convenções:
- Declarar variáveis apenas como estáticas pode levar à alteração de seus valores por uma ou mais instâncias de uma classe na qual ela é declarada.
- Declará-las como finais estáticas ajudará a criar um CONSTANT. Existe apenas uma cópia da variável que não pode ser reinicializada.
Pontos Importantes sobre a variável estática final:
- Inicialização da variável Obrigatória : Se a variável estática declarada como final, então temos que realizar a inicialização explicitamente se estamos usando ou não e JVM não fornecerá nenhum valor padrão para a variável estática final.
class
Test {
final
static
int
x;
public
static
void
main(String args)
{
}
}
Saída:
error: variable x not initialized in the default constructor
- Inicialização antes do carregamento da classe : Para a variável estática final, é obrigatório que realizemos a inicialização antes da conclusão do carregamento da classe. Podemos inicializar uma variável estática final no momento da declaração.
class
Test {
final
static
int
x =
10
;
public
static
void
main(String args)
{
System.out.println(x);
}
}
Saída:
10
- Inicializar dentro de um bloco estático : Também podemos inicializar uma variável estática final dentro de um bloco estático porque devemos inicializar uma variável estática final antes da classe e sabemos que o bloco estático é executado antes do método main().
class
Test {
final
static
int
x;
static
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Saída:
10
Parte dos métodos acima mencionados, se tentarmos inicializar uma variável estática final em qualquer outro lugar, então teremos erro de tempo de compilação.
class
Test {
final
static
int
x;
public
static
void
m()
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
Saída:
error: cannot assign a value to final variable x
Implementação da variável 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);
}
}
Saída:
error: cannot assign a value to final variable company
Este artigo é contribuído por Bishal Kumar Dubey. Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar seu artigo pelo correio para [email protected]. Veja o seu artigo que aparece na página principal do GeeksforGeeks e ajude outros Geeks.