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.
classTest {finalstaticintx;publicstaticvoidmain(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.
classTest {finalstaticintx =10;publicstaticvoidmain(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().
classTest {finalstaticintx;static{x =10;}publicstaticvoidmain(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.