¿Qué significa la palabra clave static en un método o campo?
Opciones
- No se puede cambiar después de su primera asignación
- Pertenece a la clase, así que no hace falta una instancia (Opción correcta)
- Solo es visible dentro del mismo archivo fuente
- Se ejecuta automáticamente cuando arranca el programa
Respuesta
Pertenece a la clase, no a un objeto concreto, y puedes usarlo sin crear una instancia
Por qué
Los campos y métodos normales (de instancia) pertenecen a cada objeto: cada new Person() tiene su propio name.
Un miembro static pertenece a la clase: solo hay una copia, compartida por todos los objetos, y lo llamas como ClassName.method() sin new. Math.max(1, 2) y main son static.
Cuidado: los campos static mutables son estado compartido, una fuente clásica de bugs en programas multi-thread.
Recuerda
static = una copia por clase, no por objeto.