English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

As variáveis estáticas são inicializadas no construtor padrão do Java?

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.

Exemplo

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

Inicialização de variáveis estáticas

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.

Exemplo

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

Inicialização de variáveis estáticas

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.

Exemplo

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);
   }
}

Erro de compilação

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-

Exemplo

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.

Exemplo

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
Você também pode gostar