JavaRush /Java Blog /Random-IT /Pausa caffè #142. Che ruolo gioca la parola chiave static...

Pausa caffè #142. Che ruolo gioca la parola chiave statica in Java?

Pubblicato nel gruppo Random-IT
Fonte: FreeCodeCamp La parola chiave static può essere utilizzata in diverse parti del codice Java come variabili, metodi e blocchi statici. Oggi scopriremo esattamente come può essere applicato nella pratica. Pausa caffè #142.  Che ruolo gioca la parola chiave statica in Java?  -1Lo scopo principale dell'utilizzo della parola chiave static in Java è risparmiare memoria. Quando creiamo una variabile in una classe a cui accederanno altre classi, dobbiamo prima creare un'istanza della classe e quindi assegnare un nuovo valore a ciascuna istanza della variabile. Ciò è necessario affinché i valori delle nuove variabili siano gli stessi per tutte le nuove classi/oggetti. Ma quando creiamo variabili statiche, il loro valore rimane costante in tutte le altre classi e non abbiamo bisogno di creare un'istanza per utilizzare la variabile. In questo modo creiamo la variabile una volta, quindi la memoria viene allocata solo una volta. Lo capirai meglio con alcuni esempi in questo articolo.

Come creare una variabile statica in Java

Per capire come utilizzare la parola chiave static durante la creazione di variabili, diamo un'occhiata al modo consueto di creare variabili condivise da ciascuna istanza di una classe.
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
    }
}
Spiegherò cosa è successo nel codice sopra passo dopo passo. Abbiamo creato una classe Student con tre variabili: studentName , course e school . Abbiamo quindi creato due istanze della classe Student :
Student Student1 = new Student();
Student Student2 = new Student();
La prima istanza è Student1 , che ha accesso alle variabili create nella sua classe, ha i seguenti valori:
Student1.studentName = "Ihechikara";
Student1.course = "Data Visualization";
Student1.school = "freeCodeCamp";
La seconda istanza aveva i seguenti significati:
Student2.studentName = "John";
Student2.course = "Data Analysis with Python";
Student2.school = "freeCodeCamp";
Se guardi da vicino, scoprirai che entrambi gli studenti hanno lo stesso nome della scuola: "freeCodeCamp". Ma cosa succederebbe se dovessimo creare 100 studenti per la stessa scuola? Ciò significa che inizializzeremo la variabile con lo stesso valore 100 volte, allocando ogni volta nuova memoria. Questo potrebbe non essere un problema per alcuni, ma in una codebase di grandi dimensioni può rallentare notevolmente il programma. Per risolvere questo problema, utilizzeremo la parola chiave static per creare la variabile school . Successivamente, tutte le istanze della classe possono utilizzare questa variabile. Qualcosa come questo:
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
    }
}
In questo codice abbiamo creato una variabile statica chiamata school . Si noti che la parola chiave static precede il tipo di dati e il nome della variabile: static String school = "freeCodeCamp"; . Ora, quando creiamo una nuova istanza della nostra classe, non abbiamo bisogno di inizializzare la variabile school per ogni istanza. Nel nostro codice, abbiamo assegnato un valore a una variabile solo nella prima istanza, quindi questo è stato ereditato dall'istanza successiva. Tieni presente che la modifica del valore di una variabile statica in un punto qualsiasi del codice sovrascrive il valore in altre parti del codice in cui era stata precedentemente dichiarata. Pertanto, dovresti utilizzare la parola chiave static solo per le variabili destinate a rimanere costanti nel programma. Puoi anche assegnare un valore a una variabile quando la crei in modo da non doverla dichiarare nuovamente quando istanzia la classe: static String school = "freeCodeCamp"; . Questo è ciò che ottieni se usi questo metodo:
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
    }
}
Ora vedrai come inizializzare le variabili statiche utilizzando i blocchi statici.

Come creare un metodo statico in Java

Prima di esaminare l'esempio, ecco alcune cose che devi sapere sui metodi statici in Java:
  • I metodi statici possono accedere e modificare solo variabili statiche.
  • I metodi statici possono essere chiamati/utilizzati senza creare un'istanza della classe.
Ecco un esempio per aiutarti a capire questo:
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
    }
}
Nel codice sopra, abbiamo creato un numero intero ( evenNumber ) in una classe chiamata EvenNumber . Il nostro metodo statico si chiama incrementaBy2() . Questo metodo incrementa il valore dell'intero evenNumber e ne stampa il valore. Senza creare un'istanza della classe, siamo riusciti a chiamare il metodo incrementaBy2() nel metodo principale del programma . Ogni volta che veniva chiamato il metodo, evenNumber veniva incrementato di 2 e stampato. Puoi anche aggiungere il nome della classe a un metodo utilizzando la notazione punto quando chiami il metodo: EvenNumber.incrementBy2(); . Ogni metodo statico appartiene alla classe, non alle istanze della classe.

Come creare un blocco statico in Java

I blocchi statici in Java sono simili ai costruttori. Possiamo usarli per inizializzare le variabili statiche, vengono eseguite dal compilatore prima del metodo main .
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);
    }
}
Nel codice sopra, abbiamo creato una variabile intera statica year . Lo abbiamo quindi inizializzato in un blocco statico:
static {
        year = 2022;
        System.out.println("This code block got executed first");
    }
Come puoi vedere, un blocco statico può essere creato utilizzando la parola chiave static seguita da parentesi graffe. Nel blocco statico del nostro codice, abbiamo inizializzato la variabile anno con il valore 2022. Abbiamo anche stampato del testo: "Questo blocco di codice è stato eseguito per primo". Nel metodo principale abbiamo stampato "Hello World" e una variabile statica anno . Nella console, il codice verrà eseguito in questo ordine:
Questo blocco di codice è stato eseguito per primo Hello World 2022
Ciò dimostra chiaramente come il codice nel blocco statico venga eseguito prima del metodo main .

Conclusione

In questo articolo abbiamo parlato della parola chiave statica in Java. Questa è una parola chiave che fondamentalmente ci aiuta a ottimizzare la memoria nei programmi scritti in Java. Abbiamo anche visto come creare variabili e metodi statici con esempi. Infine, abbiamo parlato dei blocchi statici, che possono essere utilizzati per inizializzare variabili statiche. I blocchi statici vengono eseguiti prima del metodo main. Buona programmazione!
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION