La palabra clave estática es un modificador sin acceso en Java que se puede usar para variables, métodos y bloques de código. Las variables estáticas en Java pertenecen a la clase, es decir, se inicializa solo una vez al comienzo de la ejecución. Al usar variables estáticas, se comparte una sola copia entre todas las instancias de la clase, y se puede acceder a ellas directamente por el nombre de la clase y no requieren ninguna instancia. El método Static pertenece de manera similar a la clase y no a la instancia y puede acceder solo a variables estáticas pero no a variables no estáticas.
Ejemplo 1: los métodos estáticos pueden acceder a variables estáticas.
Java
// Java program to check accessibility // of static variables inside // static methods class GFG { // declaring variable 'a' as static static int a = 5; // main is also a static type public static void main(String args[]) { // accessing value of // static variable System.out.println("Static variable:" + a); } }
Static variable:5
Ejemplo 2: No podemos acceder a variables no estáticas dentro de un método estático.
Java
// Java program to check accessibility // of non - static variables inside // static methods class GFG { // declaring variable 'a' as non - static int a = 5; // main is also a static type public static void main(String args[]) { // accessing value of // non - static variable System.out.println("Non - Static variable:" + a); } }
Producción
prog.java:16: error: non-static variable a cannot be referenced from a static context System.out.println("Non - Static variable:" + a); ^ 1 error
Ejemplo 3:
Java
// Java Program to demonstrate the accessibility // of static and non-static variables // by static method class Student { // initialized to zero int a; // initialized to zero when class is loaded // but not for each object created. static int b; // Constructor Student() { // incrementing static variable b b++; } // method for printing public void printData() { System.out.println("Value of a = " + a); System.out.println("Value of b = " + b); } /*public static void increment(){ a++; }*/ } // Driver class class GFG { // main is a static block public static void main(String args[]) { // creating instance Student s1 = new Student(); s1.printData(); // directly accessing variable 'b' // by class name because it is static Student.b++; s1.printData(); } }
Value of a = 0 Value of b = 1 Value of a = 0 Value of b = 2
En el programa anterior, si eliminamos los comentarios del método de incremento, se generará un error porque el método de incremento es estático y la variable a no es estática y ya sabemos que los métodos estáticos no pueden acceder a variables no estáticas.
Publicación traducida automáticamente
Artículo escrito por dadimadhav y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA