Diferencia entre variables estáticas y no estáticas en Java

Hay tres tipos de variables en Java :

  • Variables locales
  • Variables de instancia
  • Variables estáticas

Las variables locales y las variables de instancia se denominan juntas variables no estáticas. Por lo tanto, también se puede decir que las variables de Java se pueden dividir en 2 categorías:

  • Variables estáticas: cuando una variable se declara como estática, se crea una sola copia de la variable y se comparte entre todos los objetos a nivel de clase. Las variables estáticas son, esencialmente, variables globales. Todas las instancias de la clase comparten la misma variable estática.

    Puntos importantes para las variables estáticas: –

    • Podemos crear variables estáticas solo a nivel de clase. Ver aquí
    • El bloque estático y las variables estáticas se ejecutan en el orden en que están presentes en un programa.

    A continuación se muestra el programa Java para demostrar que el bloque estático y las variables estáticas se ejecutan en el orden en que están presentes en un programa.

    // Java program to demonstrate execution
    // of static blocks and variables
    class Test {
        // static variable
        static int a = m1();
      
        // static block
        static
        {
            System.out.println("Inside static block");
        }
      
        // static method
        static int m1()
        {
            System.out.println("from m1");
            return 20;
        }
      
        // static method(main !!)
        public static void main(String[] args)
        {
            System.out.println("Value of a : " + a);
            System.out.println("from main");
        }
    }

    Producción:

    from m1
    Inside static block
    Value of a : 20
    from main
    
  • Variable no estática
    • Variables locales : una variable definida dentro de un bloque, método o constructor se denomina variable local.
      • Estas variables se crean cuando se ingresa el bloque o se llama a la función y se destruye después de salir del bloque o cuando la llamada regresa de la función.
      • El alcance de estas variables existe solo dentro del bloque en el que se declara la variable. es decir, podemos acceder a estas variables solo dentro de ese bloque.
      • La inicialización de la variable local es obligatoria.
    • Variables de instancia: las variables de instancia son variables no estáticas y se declaran en una clase fuera de cualquier método, constructor o bloque.
      • Como las variables de instancia se declaran en una clase, estas variables se crean cuando se crea un objeto de la clase y se destruyen cuando se destruye el objeto.
      • A diferencia de las variables locales, podemos usar especificadores de acceso para variables de instancia. Si no especificamos ningún especificador de acceso, se utilizará el especificador de acceso predeterminado.
      • La inicialización de la variable de instancia no es obligatoria. Su valor por defecto es 0
      • Solo se puede acceder a la variable de instancia mediante la creación de objetos.

    Ejemplo :

    // Java program to demonstrate
    // non-static variables
      
    class GfG {
      
        // non-static variable
        int rk = 10;
      
        public static void main(String[] args)
        {
            // Instance created inorder to access
            // a non static variable.
            Gfg f = new Gfg();
      
            System.out.println("Non static variable"
                               + " accessed using instance"
                               + " of a class");
            System.out.println("Non Static variable "
                               + f.rk);
        }
    }
    Producción:

    Non static variable accessed using instance of a class.
    Non Static variable 10
    

Las principales diferencias entre variables estáticas y no estáticas son:

variable estática Variable no estática
Se puede acceder a las variables estáticas usando el nombre de la clase Se puede acceder a las variables no estáticas usando la instancia de una clase
Se puede acceder a las variables estáticas mediante métodos estáticos y no estáticos No se puede acceder a las variables no estáticas dentro de un método estático.
Las variables estáticas reducen la cantidad de memoria utilizada por un programa. Las variables no estáticas no reducen la cantidad de memoria utilizada por un programa
Las variables estáticas se comparten entre todas las instancias de una clase. Las variables no estáticas son específicas de esa instancia de una clase.
La variable estática es como una variable global y está disponible para todos los métodos. La variable no estática es como una variable local y se puede acceder a ella solo a través de una instancia de una clase.

Publicación traducida automáticamente

Artículo escrito por bestharadhakrishna y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *