¿Qué es y cómo funciona static en Java?

| Última modificación: 5 de julio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este post nos enfocaremos en hablar sobre el uso de static en Java ya que es crucial para la gestión eficiente de recursos y la organización del código. Nos enfocaremos en explicarte qué es static en Java, cómo funciona, y cuáles son sus aplicaciones más comunes. Así que prepárate para sumergirte en el mundo de las variables, métodos y bloques estáticos en Java.

¿Qué es el modificador static en Java?

En Java, el modificador static se utiliza para indicar que un miembro, ya sea variable, método, o clase interna, pertenece a la clase en sí, en lugar de a una instancia específica de la clase. Esto significa que solo habrá una copia de ese miembro, compartida entre todas las instancias de la clase. Este comportamiento contrasta con los miembros no estáticos, que tienen una copia independiente por cada instancia de la clase.

Ventajas del uso de static en Java

  • Eficiencia en memoria: Al existir solo una copia de los miembros estáticos, se reduce el consumo de memoria.
  • Acceso global: Los miembros estáticos pueden ser accedidos directamente sin necesidad de instanciar la clase.
  • Conveniencia: Permiten métodos utilitarios que pueden ser usados en cualquier parte del programa sin crear objetos adicionales.

¿Cómo funciona static en Java?

Variables estáticas

Las variables estáticas se declaran utilizando la palabra clave static. Estas variables se inicializan cuando la clase se carga en memoria, y su valor se mantiene durante toda la ejecución del programa. Aquí te mostramos un ejemplo:

public class Contador {
public static int contador = 0;

public Contador() {
contador++;
}
}

En este ejemplo, contador es una variable estática que se incrementa cada vez que se crea una instancia de la clase Contador.

Métodos estáticos

Los métodos estáticos también se declaran utilizando static en Java. Estos métodos pueden ser llamados sin necesidad de crear una instancia de la clase. Sin embargo, no pueden acceder a miembros no estáticos directamente. Un ejemplo de método estático es:

public class Utilidades {
public static int sumar(int a, int b) {
return a + b;
}
}

Puedes llamar al método sumar sin crear una instancia de Utilidades:

int resultado = Utilidades.sumar(5, 3);

Bloques estáticos

Los bloques estáticos son segmentos de código que se ejecutan cuando la clase se carga en memoria. Estos son muy útiles para inicializar variables estáticas complejas. Un ejemplo es:

public class Inicializador {
public static int valor;

static {
valor = 42;
}
}

Clases internas estáticas

Ahora bien, las clases internas pueden ser declaradas como estáticas, lo que les permite ser usadas sin una instancia de la clase externa. Aquí tienes un ejemplo:

public class Externa {
public static class Interna {
public void mostrar() {
System.out.println("Hola desde la clase interna estática");
}
}
}

Para usar la clase interna estática:

Externa.Interna interna = new Externa.Interna();
interna.mostrar();

Importación estática

Una característica útil introducida en Java 5 es la capacidad de importar métodos y variables estáticas para usarlos como si fueran miembros de la clase actual. Esto mejora la legibilidad del código, especialmente en pruebas unitarias. Funciona así:

import static java.lang.Math.*;

public class Prueba {
public static void main(String[] args) {
System.out.println(PI);
System.out.println(sqrt(16));
}
}

En este ejemplo, hemos importado PI y sqrt de la clase Math y los hemos usado directamente.

Patrones de diseño con static en Java

Singleton

El patrón Singleton asegura que una clase tenga solo una instancia y proporciona un punto de acceso global a esa instancia. Se implementa utilizando una variable estática para almacenar la única instancia de la clase y un método estático para obtener dicha instancia:

public class Singleton {
private static Singleton instancia;

private Singleton() {}

public static Singleton getInstancia() {
if (instancia == null) {
instancia = new Singleton();
}
return instancia;
}
}

Tabla de diferencias entre miembros estáticos y no estáticos

CaracterísticaMiembro EstáticoMiembro No Estático
PertenenciaClaseInstancia
AccesoClase.miembroobjeto.miembro
InicializaciónUna vez al cargar la claseCada vez que se crea una instancia
MemoriaCompartida entre instanciasCopia independiente por instancia
Ejemplo de usoMétodos utilitarios, constantesPropiedades específicas de objetos
Fuente. KeepCoding

Ahora ya aprendiste que el modificador static en Java es una gran herramienta que te permite crear variables y métodos que son compartidos por todas las instancias de una clase. Esto no solo mejora la eficiencia de tu programa, sino que también simplifica el acceso a funcionalidades comunes.

¿Te apasiona la programación y quieres aprender más sobre Java y otras tecnologías? ¡Apúntate al Full Stack Bootcamp Java! Este programa intensivo te permitirá adquirir las habilidades necesarias para transformar tu carrera y entrar al sector tecnológico, una industria con alta demanda de profesionales, salarios competitivos y estabilidad laboral. ¡No esperes más y cambia tu vida hoy mismo!

Jose Luis Bustos
Jose Luis Bustos

Lead Software Architect & Coordinador del Bootcamp en Desarrollo de Apps Móviles iOS & Android.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado