English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Arquivo estático/As variáveis pertencem à classe, serão carregadas na memória com a classe. Você pode chamá-las sem criar um objeto (usando o nome da classe como referência). Há apenas uma cópia do campo estático disponível em toda a classe, ou seja, o valor do campo estático é o mesmo em todos os objetos. Você pode usar a palavra-chave static para definir um campo estático.
public class Sample{ static int num = 50; public void demo(){ System.out.println("Valor de num no método demo ");+ Sample.num); } public static void main(String args[]){ System.out.println("Valor de num no método main ");+ Sample.num); new Sample().demo(); } }
Resultados de Saída
Valor de num no método main 50 Valor de num no método demo 50
Se declarar uma variável estática em uma classe e não inicializá-la, é como usar uma variável de instância; o compilador inicializará com valores padrão no construtor padrão.
public class Sample{ static int num; static String str; static float fl; static boolean bool; public static void main(String args[]){ System.out.println(Sample.num); System.out.println(Sample.str); System.out.println(Sample.fl); System.out.println(Sample.bool); } }
Resultados de Saída
0 null 0.0 falso
No entanto, se você declarar uma variável de instância estática e o compilador Java não a inicializará no construtor padrão, é necessário inicializar variáveis estáticas e finais. Se você não compilar, gerará um erro.
public class Sample{ final static int num; final static String str; final static float fl; final static boolean bool; public static void main(String args[]){ System.out.println(Sample.num); System.out.println(Sample.str); System.out.println(Sample.fl); System.out.println(Sample.bool); } }
Sample.java:2: erro: variável num não inicializada no construtor padrão final static int num; ^ Sample.java:3: erro: variável str não inicializada no construtor padrão final static String str; ^ Sample.java:4: erro: variável fl não inicializada no construtor padrão final static float fl; ^ Sample.java:5: erro: variável bool não inicializada no construtor padrão final static boolean bool; ^ 4 erros
Você não pode atribuir um valor a uma variável final a partir do construtor-
public class Sample{ final static int num; Sample(){ num =;100; } }
Resultados de Saída
Sample.java:4: erro: não é possível atribuir um valor a uma variável final num num =;100; ^ 1 erro
A única maneira de inicializar variáveis estáticas finais, além das declarações de inicialização, é através de um bloco estático.
ABloco EstáticoÉ um bloco de código que usa a palavra-chave static. Normalmente, esses são usados para inicializar membros estáticos. O JVM executa o bloco estático antes do método main durante a carga da classe.
public class Sample{ final static int num; final static String str; final static float fl; final static boolean bool; static{ num =;100; str = "krishna"; fl =;100.25f; bool = true; } public static void main(String args[]){ System.out.println(Sample.num); System.out.println(Sample.str); System.out.println(Sample.fl); System.out.println(Sample.bool); } }
Resultados de Saída
100 krishna 100.25 true