Sobes.tech
Junior

¿Qué significa la palabra clave 'static' en Java?

sobes.tech AI

Respuesta de la IA

static en Java se utiliza para declarar elementos que pertenecen a la clase, no a una instancia específica del objeto.

La palabra clave puede aplicarse a:

  • Variables (campos):
    • Una copia de la variable existe para toda la clase, independientemente de la cantidad de instancias creadas.
    • Se puede acceder a ella mediante el nombre de la clase (por ejemplo, ClassName.staticVariable).
    // Ejemplo de variable estática
    public class MyMath {
        public static final double PI = 3.14159;
        // Acceso: MyMath.PI
    }
    
  • Métodos:
    • El método pertenece a la clase, no a un objeto en particular.
    • Puede ser llamado mediante el nombre de la clase (por ejemplo, ClassName.staticMethod()).
    • No tiene acceso a los miembros no estáticos de la clase (variables o métodos), ya que están ligados a la instancia.
    // Ejemplo de método estático
    public class Calculator {
        public static int add(int a, int b) {
            return a + b;
        }
        // Llamada: Calculator.add(5, 3)
    }
    
  • Bloques de inicialización:
    • Se ejecuta una vez al cargar la clase en la JVM.
    • Se usa para inicializar campos estáticos o realizar otras acciones relacionadas con la clase.
    // Ejemplo de bloque estático
    public class DataInitializer {
        static {
            // Código que se ejecuta al cargar la clase
            System.out.println("DataInitializer class loaded.");
        }
    }
    
  • Clases internas (inner/nested classes):
    • La clase interna estática se comporta como una clase de nivel superior, excepto que está dentro de otra clase.
    • No requiere crear una instancia de la clase externa para acceder a ella.
    • Solo tiene acceso a los miembros estáticos de la clase externa.
    // Ejemplo de clase interna estática
    public class OuterClass {
        static class StaticInnerClass {
            // Campos y métodos de la clase interna estática
        }
    }
    // Acceso: OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
    

El uso de static ayuda en la creación de clases utilitarias, almacenamiento de datos comunes y gestión del estado a nivel de clase.