Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Java Static explicado: Variables, métodos y bloques – Ejemplos prácticos

En Java, la palabra clave static aparece en tres contextos distintos: variables estáticas, métodos estáticos y bloques estáticos. Cada uno juega un papel único en el ciclo de vida de una clase y sus instancias.

Variables estáticas en Java

Una variable estática es un campo a nivel de clase que se inicializa una sola vez cuando la clase se carga por primera vez. A diferencia de las variables de instancia, una única copia de una variable estática es compartida por todos los objetos de esa clase.

Sintaxis:

public static int contador;

Métodos estáticos en Java

Los métodos estáticos pertenecen a la clase en lugar de a una instancia particular. Pueden invocarse sin crear un objeto y solo pueden acceder a datos estáticos.

Todos los métodos main son estáticos para que la JVM pueda lanzar una aplicación antes de que existan objetos.

Ejemplo práctico: Uso de variables y métodos estáticos

El siguiente programa demuestra cómo un contador estático se comparte entre múltiples objetos Estudiante.

public class Demo {
    public static void main(String[] args) {
        Estudiante s1 = new Estudiante();
        s1.showData();
        Estudiante s2 = new Estudiante();
        s2.showData();
        // Estudiante.b++; // descomenta para modificar el contador
        // s1.showData();
    }
}

class Estudiante {
    int a; // variable de instancia, por defecto 0
    static int b; // contador estático, inicializado a 0 una vez
    Estudiante() {
        b++; // incrementa el contador cada vez que se crea un Estudiante
    }
    public void showData() {
        System.out.println("Valor de a = " + a);
        System.out.println("Valor de b = " + b);
    }
}

Compila y ejecuta con java Demo para ver la salida:

Java Static explicado: Variables, métodos y bloques – Ejemplos prácticos

El diagrama siguiente ilustra cómo se crean las variables de referencia y los objetos, y cómo la variable estática b se comparte entre instancias.

Java Static explicado: Variables, métodos y bloques – Ejemplos prácticos

Para acceder a la variable estática desde fuera de la clase, usa NombreClase.nombreVariable:

Estudiante.b++; // incrementa el contador compartido
s1.showData(); // mostrará el valor actualizado de b

Intentar acceder a una variable de instancia desde un contexto estático produce un error de compilación:

error: non-static variable a cannot be referenced from a static context
a++;

Esto ocurre porque los métodos estáticos no pueden interactuar directamente con campos de instancia.

Bloques estáticos en Java

Un bloque estático es un bloque especial de código que se ejecuta una vez cuando la clase se carga por primera vez en la JVM. Es ideal para inicializar campos estáticos que requieren más que una simple asignación.

class Test {
    static int a;
    static int b;
    static {
        a = 10;
        b = 20;
    }
}

El siguiente programa demuestra la salida de un bloque estático:

public class Demo {
    static int a;
    static int b;
    static {
        a = 10;
        b = 20;
    }
    public static void main(String[] args) {
        System.out.println("Valor de a = " + a);
        System.out.println("Valor de b = " + b);
    }
}

Salida:

Valor de a = 10
Valor de b = 20

Java

  1. Palabra clave final en Java: Variables, métodos y clases
  2. Operador instanceof en Java: Guía completa
  3. Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
  4. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  5. Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
  6. Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
  7. Dominando el manejo de excepciones en Java: Try, Catch, Finally, Throw y Throws explicados
  8. Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
  9. Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
  10. Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación
  11. Interfaz vs Clase Abstracta en Java: Cómo elegir la abstracción correcta