English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Archivo estático/Las variables pertenecen a la clase, se cargarán en la memoria junto con la clase. Puede llamarlas sin crear un objeto (utilice el nombre de la clase como referencia). Solo hay una copia del campo estático en toda la clase, es decir, el valor del campo estático es el mismo en todos los objetos. Puede definir un campo estático utilizando la palabra clave static.
public class Sample{ static int num = 50; public void demo(){ System.out.println("Valor de num en el método demo ");+ Sample.num); } public static void main(String args[]){ System.out.println("Valor de num en el método main ");+ Sample.num); new Sample().demo(); } }
Resultado de salida
Valor de num en el método main 50 Valor de num en el método demo 50
Si declara una variable estática en la clase y no las ha inicializado, se inicializarán con los valores por defecto del constructor por defecto, como si se usaran variables de instancia. El compilador usará los valores por defecto en el constructor por defecto.
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); } }
Resultado de salida
0 null 0.0 false
Pero, si declara una variable de instancia estática y el compilador Java no la inicializará en el constructor por defecto, debe inicializar las variables estáticas y finales. Si no lo compila, se generará un error.
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: error: variable num not initialized in the default constructor final static int num; ^ Sample.java:3: error: variable str not initialized in the default constructor final static String str; ^ Sample.java:4: error: la variable fl no está inicializada en el constructor predeterminado final static float fl; ^ Sample.java:5: error: la variable bool no está inicializada en el constructor predeterminado final static boolean bool; ^ 4 errores
No se puede asignar un valor a una variable final desde el constructor-
public class Sample{ final static int num; Sample(){ num =;100; } }
Resultado de salida
Sample.java:4: error: no se puede asignar un valor a la variable final num num =;100; ^ 1 error
La única manera de inicializar variables estáticas finales, además de las declaraciones de inicialización, es a través de un bloque estático.
ABloque estáticoEs un bloque de código que utiliza la palabra clave estática. Por lo general, estos se utilizan para inicializar miembros estáticos. La JVM ejecuta los bloques estáticos antes del método main durante la carga de la clase.
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); } }
Resultado de salida
100 krishna 100.25 true