JavaRush /Blog Java /Random-ES /Pausa para el café #142. ¿Qué papel juega la palabra clav...

Pausa para el café #142. ¿Qué papel juega la palabra clave estática en Java?

Publicado en el grupo Random-ES
Fuente: FreeCodeCamp La palabra clave estática se puede utilizar en diferentes partes del código Java, como variables, métodos y bloques estáticos. Hoy descubriremos exactamente cómo se puede aplicar en la práctica. Pausa para el café #142.  ¿Qué papel juega la palabra clave estática en Java?  - 1El objetivo principal de utilizar la palabra clave estática en Java es ahorrar memoria. Cuando creamos una variable en una clase a la que accederán otras clases, primero debemos crear una instancia de la clase y luego asignar un nuevo valor a cada instancia de la variable. Esto es necesario para que los valores de las nuevas variables sean los mismos para todas las clases/objetos nuevos. Pero cuando creamos variables estáticas, su valor permanece constante en todas las demás clases y no necesitamos crear una instancia para usar la variable. De esta manera creamos la variable una vez, por lo que la memoria se asigna solo una vez. Comprenderá esto mejor con algunos ejemplos en este artículo.

Cómo crear una variable estática en Java

Para comprender cómo utilizar la palabra clave estática al crear variables, veamos la forma habitual de crear variables compartidas por cada instancia de una clase.
class Student {
    String studentName;
    String course;
    String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();

        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";
        Student2.school = "freeCodeCamp";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
Explicaré paso a paso lo que sucedió en el código anterior. Hemos creado una clase Estudiante con tres variables: nombre de estudiante , curso y escuela . Luego creamos dos instancias de la clase Estudiante :
Student Student1 = new Student();
Student Student2 = new Student();
La primera instancia es Student1 , que tiene acceso a las variables creadas en su clase, tiene los siguientes valores:
Student1.studentName = "Ihechikara";
Student1.course = "Data Visualization";
Student1.school = "freeCodeCamp";
La segunda instancia tenía los siguientes significados:
Student2.studentName = "John";
Student2.course = "Data Analysis with Python";
Student2.school = "freeCodeCamp";
Si miras de cerca, encontrarás que ambos estudiantes tienen el mismo nombre de escuela: "freeCodeCamp". Pero ¿y si tuviéramos que crear 100 estudiantes para la misma escuela? Esto significa que inicializaremos la variable con el mismo valor 100 veces, asignando nueva memoria cada vez. Puede que esto no sea un problema para algunos, pero en una base de código grande puede ralentizar significativamente el programa. Para resolver este problema, usaremos la palabra clave estática para crear la variable escolar . Después de esto, todas las instancias de la clase pueden usar esta variable. Algo como esto:
class Student {
    String studentName;
    String course;
    static String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";


        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
En este código, hemos creado una variable estática llamada escuela . Observe que la palabra clave estática precede al tipo de datos y al nombre de la variable: static String school = "freeCodeCamp"; . Ahora, cuando creamos una nueva instancia de nuestra clase, no necesitamos inicializar la variable escolar para cada instancia. En nuestro código, asignamos un valor a una variable solo en la primera instancia y luego lo heredamos en la siguiente instancia. Tenga en cuenta que cambiar el valor de una variable estática en cualquier parte del código anula el valor en otras partes del código donde se declaró previamente. Por lo tanto, sólo debe utilizar la palabra clave estática para variables que deben permanecer constantes en el programa. También puedes asignar un valor a una variable cuando la creas para no tener que declararla nuevamente cuando creas una instancia de la clase: static String school = "freeCodeCamp"; . Esto es lo que obtienes si usas este método:
class Student {
    String studentName;
    String course;
    static String school = "freeCodeCamp";

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
Ahora verás cómo inicializar variables estáticas usando bloques estáticos.

Cómo crear un método estático en Java

Antes de ver el ejemplo, aquí hay algunas cosas que necesita saber sobre los métodos estáticos en Java:
  • Los métodos estáticos solo pueden acceder y modificar variables estáticas.
  • Los métodos estáticos se pueden llamar/usar sin crear una instancia de la clase.
A continuación se muestra un ejemplo para ayudarle a comprender esto:
class EvenNumber {

    static int evenNumber;

    static void incrementBy2(){
        evenNumber = evenNumber + 2;
        System.out.println(evenNumber);
    }

    public static void main(String[] args) {
        incrementBy2(); // 2
        incrementBy2(); // 4
        incrementBy2(); // 6
        incrementBy2(); // 8
    }
}
En el código anterior, hemos creado un número entero ( evenNumber ) en una clase llamada EvenNumber . Nuestro método estático se llama incrementBy2() . Este método incrementa el valor del número entero par e imprime su valor. Sin crear una instancia de la clase, pudimos llamar al método incrementBy2() en el método principal del programa . Cada vez que llamamos al método, EvenNumber se incrementa en 2 y se imprime. También puede agregar el nombre de la clase a un método usando la notación de puntos al llamar al método: EvenNumber.incrementBy2(); . Cada método estático pertenece a la clase, no a instancias de la clase.

Cómo crear un bloque estático en Java

Los bloques estáticos en Java son similares a los constructores. Podemos usarlos para inicializar variables estáticas, el compilador los ejecuta antes que el método principal .
class Block {

    static int year;

    static {
        year = 2022;
        System.out.println("This code block got executed first");
    }

    public static void main(String[] args) {

        System.out.println("Hello World");
        System.out.println(year);
    }
}
En el código anterior, creamos una variable entera estática año . Luego lo inicializamos en un bloque estático:
static {
        year = 2022;
        System.out.println("This code block got executed first");
    }
Como puede ver, se puede crear un bloque estático usando la palabra clave estática seguida de llaves. En el bloque estático de nuestro código, inicializamos la variable año con el valor 2022. También imprimimos un texto: "Este bloque de código se ejecutó primero". En el método principal imprimimos "Hola mundo" y una variable estática año . En la consola, el código se ejecutará en este orden:
Este bloque de código se ejecutó primero Hola mundo 2022
Esto demuestra claramente cómo el código en el bloque estático se ejecuta primero antes que el método principal .

Conclusión

En este artículo, hablamos sobre la palabra clave estática en Java. Esta es una palabra clave que básicamente nos ayuda a optimizar la memoria en programas escritos en Java. También vimos cómo crear variables y métodos estáticos con ejemplos. Finalmente, hablamos de bloques estáticos, que pueden usarse para inicializar variables estáticas. Los bloques estáticos se ejecutan antes que el método principal. ¡Feliz codificación!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION