JavaRush /Blogue Java /Random-PT /Pausa para café #142. Qual é o papel da palavra-chave est...

Pausa para café #142. Qual é o papel da palavra-chave estática em Java?

Publicado no grupo Random-PT
Fonte: FreeCodeCamp A palavra-chave estática pode ser usada em diferentes partes do código Java, como variáveis, métodos e blocos estáticos. Hoje vamos descobrir exatamente como isso pode ser aplicado na prática. Pausa para café #142.  Qual é o papel da palavra-chave estática em Java?  - 1O principal objetivo de usar a palavra-chave estática em Java é economizar memória. Quando criamos uma variável em uma classe que será acessada por outras classes, devemos primeiro criar uma instância da classe e depois atribuir um novo valor a cada instância da variável. Isso é necessário para que os valores das novas variáveis ​​sejam iguais para todas as novas classes/objetos. Mas quando criamos variáveis ​​estáticas, seu valor permanece constante em todas as outras classes e não precisamos criar uma instância para usar a variável. Desta forma criamos a variável uma vez, para que a memória seja alocada apenas uma vez. Você entenderá isso melhor com alguns exemplos neste artigo.

Como criar uma variável estática em Java

Para entender como usar a palavra-chave static ao criar variáveis, vejamos a maneira usual de criar variáveis ​​que são compartilhadas por cada instância de uma 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
    }
}
Explicarei o que aconteceu no código acima passo a passo. Criamos uma classe Student com três variáveis ​​- studentName , course e school . Em seguida, criamos duas instâncias da classe Student :
Student Student1 = new Student();
Student Student2 = new Student();
A primeira instância é Student1 , que tem acesso às variáveis ​​criadas em sua classe, possui os seguintes valores:
Student1.studentName = "Ihechikara";
Student1.course = "Data Visualization";
Student1.school = "freeCodeCamp";
A segunda instância teve os seguintes significados:
Student2.studentName = "John";
Student2.course = "Data Analysis with Python";
Student2.school = "freeCodeCamp";
Se você olhar com atenção, descobrirá que os dois alunos têm o mesmo nome de escola - “freeCodeCamp”. Mas e se tivéssemos que criar 100 alunos para a mesma escola? Isso significa que inicializaremos a variável com o mesmo valor 100 vezes, alocando nova memória a cada vez. Isso pode não ser um problema para alguns, mas em uma base de código grande pode tornar o programa significativamente mais lento. Para resolver esse problema, usaremos a palavra-chave static para criar a variável school . Depois disso, todas as instâncias da classe poderão usar esta variável. Algo assim:
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
    }
}
Neste código, criamos uma variável estática chamada school . Observe que a palavra-chave static precede o tipo de dados e o nome da variável: static String school = "freeCodeCamp"; . Agora, quando criamos uma nova instância da nossa classe, não precisamos inicializar a variável school para cada instância. Em nosso código, atribuímos um valor a uma variável apenas na primeira instância, e então ele foi herdado pela próxima instância. Observe que alterar o valor de uma variável estática em qualquer lugar do código substitui o valor em outras partes do código onde ela foi declarada anteriormente. Portanto, você só deve usar a palavra-chave static para variáveis ​​que pretendem permanecer constantes no programa. Você também pode atribuir um valor a uma variável ao criá-la, para não precisar declará-la novamente ao instanciar a classe: static String school = "freeCodeCamp"; . Isto é o que você obterá se usar 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
    }
}
Agora você verá como inicializar variáveis ​​estáticas usando blocos estáticos.

Como criar um método estático em Java

Antes de vermos o exemplo, aqui estão algumas coisas que você precisa saber sobre métodos estáticos em Java:
  • Os métodos estáticos só podem acessar e modificar variáveis ​​estáticas.
  • Métodos estáticos podem ser chamados/usados ​​sem criar uma instância da classe.
Aqui está um exemplo para ajudá-lo a entender isso:
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
    }
}
No código acima, criamos um número inteiro ( evenNumber ) em uma classe chamada EvenNumber . Nosso método estático é chamado incrementBy2() . Este método incrementa o valor do inteiro EvenNumber e imprime seu valor. Sem criar uma instância da classe, conseguimos chamar o método incrementBy2() no método principal do programa . Cada vez que chamamos o método, EvenNumber foi incrementado em 2 e impresso. Você também pode anexar o nome da classe a um método usando a notação de ponto ao chamar o método: EvenNumber.incrementBy2(); . Cada método estático pertence à classe, não às instâncias da classe.

Como criar um bloco estático em Java

Os blocos estáticos em Java são semelhantes aos construtores. Podemos usá-los para inicializar variáveis ​​estáticas, elas são executadas pelo compilador antes do 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);
    }
}
No código acima, criamos uma variável inteira estática year . Em seguida, inicializamos em um bloco estático:
static {
        year = 2022;
        System.out.println("This code block got executed first");
    }
Como você pode ver, um bloco estático pode ser criado usando a palavra-chave static seguida por chaves. No bloco estático do nosso código, inicializamos a variável ano com o valor 2022. Também imprimimos algum texto - “Este bloco de código foi executado primeiro”. No método principal imprimimos “Hello World” e uma variável estática year . No console, o código será executado nesta ordem:
Este bloco de código foi executado primeiro Hello World 2022
Isso demonstra claramente como o código no bloco estático é executado primeiro, antes do método principal .

Conclusão

Neste artigo, falamos sobre a palavra-chave estática em Java. Esta é uma palavra-chave que basicamente nos ajuda a otimizar a memória em programas escritos em Java. Também vimos como criar variáveis ​​e métodos estáticos com exemplos. Por fim, falamos sobre blocos estáticos, que podem ser usados ​​para inicializar variáveis ​​estáticas. Blocos estáticos são executados antes do método principal. Boa codificação!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION