¿Alguna vez se preguntó por qué la función principal en Java incluye la palabra clave estática?
La naturaleza orientada a objetos de Java permite a los desarrolladores programar clases y tipos de software utilizando patrones de diseño, y la palabra clave static denota los campos y métodos que forman parte de una declaración de clase.
La razón por la que la función principal incluye la palabra clave estática es que debe ser llamada por una máquina virtual Java (JVM) sin tener que crear una instancia del paquete.
En esta publicación, cubriremos la palabra clave estática de Java y cómo ayuda a administrar la memoria y el ciclo de vida de los campos, métodos y clases. Revisaremos los miembros estáticos (campos y métodos) en el SDK de Java y luego demostraremos cómo usar la palabra clave estática para crear clases anidadas.
Métodos estáticos y de instancia en Java
De forma predeterminada, Java asocia campos y métodos de miembros con una instancia de una clase. Los métodos de alcance estático no requieren que los desarrolladores creen instancias de una clase.
Por lo tanto, el ámbito estático y el ámbito de la instancia están separados. Un ámbito de instancia, creado al crear un nuevo objeto, puede acceder a campos de instancia, mientras que un ámbito estático solo puede acceder a campos y métodos estáticos.
Algunos patrones de diseño, como el patrón singleton, usan estática. En el patrón singleton, le dice a la JVM que solo permita una instancia del tipo.
De forma predeterminada, las clases contienen métodos y campos de ámbito de nivel de instancia. Esto significa que los campos que crea están vinculados a la vida útil de una instancia del tipo en sí. Por ejemplo, vea el siguiente código:
public Person { int id;
String name;
}
los Persona la clase tiene dos campos, IDENTIFICACIÓN y Nombre. Puede crear dos instancias de este tipo, cada una de las cuales puede almacenar información específica de esa instancia:
Person one = new Person();one.name = "John Doe";
Person two = new Person();
two.name = "Dohn Joe";
Por defecto, estas instancias no sobrescriben los valores almacenados en otra variable. Esto también se conoce como ámbito de nivel de instancia. Otro tipo de alcance es el alcance estático. También puede llamar al ámbito estático «ámbito de clase» porque el nombre de la clase accede a los campos y métodos, no al nombre de la instancia.
Tomemos como ejemplo el siguiente código:
class Person { static int id;
String name;
}
En el código anterior, IDENTIFICACIÓN field es un miembro estático, no un miembro de instancia. Para acceder a este campo, utilice el nombre de la clase, Persona, en lugar del nombre de la instancia o la variable que se está creando.
Person.id = 5;System.out.println(Person.id);
Lo notable es que también puede acceder a campos estáticos desde variables. Entonces se muestra el siguiente código 5 dos veces:
Person one = new Person();Person.id = 5;
System.out.println(Person.id);
System.out.println(one.id);
En el código anterior, cambió el campo estático una vez y el tipo refleja el cambio. Cuando una instancia intenta acceder al valor de un miembro estático, lo obtiene de la clase. Cada tipo de clase no aísla a sus miembros estáticos.
Así que, un breve resumen:
- Los miembros de la instancia son específicos de la instancia en la que los crea y asigna; los miembros estáticos pertenecen al tipo en sí.
- Solo se puede acceder a un miembro de instancia desde una variable de instancia, pero se puede acceder a un miembro estático desde variables de tipo y de instancia.
- Se puede acceder a un campo estático desde métodos no estáticos o de instancia, pero un método estático no puede acceder a campos y miembros de instancia.
Campos estáticos y métodos en Java
En Java, puede usar la palabra clave estática para modificar el comportamiento de por vida de campos, métodos y clases. Si bien acaba de aprender a usar la palabra clave estática para campos en la sección anterior, puede usarla para crear métodos estáticos en su clase.
El modificador estático puede acceder a los métodos directamente desde el nombre del tipo. Simplemente aplique un modificador en la declaración del método para marcar el método como estático:
public static String sayHello() { // code here…
}
En la API de Java, muchas clases usan métodos estáticos. Por ejemplo, uno de los más famosos y más utilizados cadena de formato El método es una declaración estática que permite a los desarrolladores formatear la salida. Puede formatear la salida de la siguiente manera:
String template = "%s is %d years old";String name = "John Doe";
int age = 35;
System.out.println(String.format(template, name, age));
En Java, también puede acceder a métodos estáticos desde una variable de instancia. Acceder a métodos estáticos desde una instancia no es útil porque los métodos estáticos no pueden acceder a los campos y miembros de la instancia. Si bien puede acceder al método de formateo en su Cuerda variables, debe pasar el valor nuevamente (porque el método de formato no puede acceder al valor de la instancia).
Mira abajo:
String template = "%s is %d years old";String name = "John Doe";
int age = 35;
System.out.println(template.format(template, name, age));
Puede llamar al método de formato en una variable de plantilla, pero el método no puede leer el valor de la plantilla porque está en el ámbito de la instancia y no en el ámbito estático o de clase. Esto se convierte en un antipatrón donde crea una inconsistencia entre su código y los métodos que llama. Por lo tanto, siempre es mejor llamar a métodos estáticos en el tipo mismo y no en una instancia.
Además de los campos y métodos estáticos, también puede usar la palabra clave estática para crear bloques estáticos. Esto convierte a Java en un lenguaje mucho más confiable que permite a los desarrolladores crear contexto a pedido.
Pero eso no es todo lo que puede hacer la palabra clave estática de Java. Las clases estáticas anidadas son otra característica interesante que discutiremos a continuación.
Constantes y clases anidadas en Java
Java no tiene una palabra clave dedicada para definir constantes, como es el caso de los lenguajes de programación tipo C. Java ofrece una palabra clave final que se usa para hacer una asignación única o de solo lectura de campo. Cuando se inicia el programa, puede asignar final variable con un constructor y retiene el valor a lo largo de la vida del programa.
La palabra clave estática ayuda a garantizar que los campos de miembros solo se inicialicen una vez y se apliquen a clase rango.
En Java, define una constante de la siguiente manera:
public static final String NAME = "THE_VALUE";
Tenga en cuenta que el término estático significa que no necesita crear una instancia para acceder al valor. Varias API utilizan este enfoque. Por ejemplo, la biblioteca Math usa palabras clave estáticas para exponer valores para número IP, VALOR MÁXIMO, y así. La última palabra clave es una asignación única.
Otra característica que habilita la palabra clave estática son las clases estáticas. Puede definir clases en clases y acceder a ellas utilizando el nombre de la clase principal.
class Person { static class Gamer {
// code here…
}
}
En su código principal, puede crear una instancia de la clase Gamer de la siguiente manera:
Person.Gamer gamer = new Person.Gamer();
Recuerda que tienes acceso a Jugador tipo z Persona escribe.
Deberías considerar la extensión. Jugador tipo z Persona type para utilizar un enfoque de programación orientado a objetos en lugar de clases anidadas. Pero depende de sus necesidades de desarrollo.
Cómo usar una palabra clave estática en Java
La palabra clave estática de Java se puede usar en una variedad de escenarios de desarrollo web, pero uno de los usos más comunes es como una característica central del programa Java.
public static void main(String args[]) { // program code here
}
Esto define el contexto estático que la JVM puede ejecutar. Dado que la función principal es estática, la JVM no necesita instanciar la clase que almacena este método. Pero como consecuencia, el método principal no puede acceder a ningún campo de instancia o miembro creado en la misma clase.
Otra área donde puede usar la palabra clave estática es el patrón singleton. El patrón singleton asegura que su programa solo cree una instancia de una clase. Las cosas importantes para recordar sobre el patrón singleton son:
- Es un constructor privado.
- Este es un método de acceso a instancias estáticas.
public class EmailSender { private static EmailSender instance;
private EmailSender() { }
public static EmailSender getInstance() {
if (instance == null) {
instance = new EmailSender();
}
return instance;
}
}
Oculte un constructor en su tipo para que otros tipos no puedan instanciar su tipo. A continuación, cree un método estático al que se pueda llamar sin una instancia de ese tipo. El método puede acceder al constructor, por lo que crea una nueva instancia y la devuelve. Antes de volver, lo guarda en un campo de tipo estático. Campo de instancia i obtener instancias el método no requiere crear una instancia. Cada vez que se necesita una instancia, los tipos externos pueden usar este método para obtener y usar la instancia, pero no pueden crear una instancia por sí mismos.
Uso de una palabra clave estática en el desarrollo de Java
En este artículo, aprendió sobre la palabra clave estática en Java y cómo ayuda a mejorar el rendimiento de la aplicación y la legibilidad del código. El artículo destaca la diferencia entre campos estáticos y predeterminados, también conocidos como campos de instancia. Luego aprendió cómo crear campos estáticos en programas Java y cómo usarlos. Para controlar su comportamiento de ciclo de vida, puede aplicar la palabra clave estática a campos, métodos y declaraciones de clase.
Ahora debería tener una mejor comprensión de cómo usar la palabra clave estática para crear constantes, ya que Java no tiene constante como otros lenguajes de programación similares a C. La palabra clave estática ayuda a controlar el ciclo de vida de los campos y variables de Java.
En escenarios donde la creación de instancias de un tipo es menos eficiente, como con dispositivos integrados, la palabra clave estática se puede inicializar durante la vida útil del programa. La palabra clave estática lo ayuda a administrar la memoria en Java y controlar la administración de memoria para campos y variables.








