Article image
Alexandre Pereira
Alexandre Pereira08/03/2023 10:07
Compartilhe

Variáveis ​​estáticas em Java – Por que e como usar métodos estáticos

  • #Java

Variáveis ​​estáticas e métodos estáticos são dois conceitos importantes em Java.

Sempre que uma variável é declarada como estática, isso significa que há apenas uma cópia dela para toda a classe, em vez de cada instância ter sua própria cópia. Um método estático significa que pode ser chamado sem criar uma instância da classe.

Variáveis ​​e métodos estáticos em Java fornecem várias vantagens, incluindo eficiência de memória, acesso global, independência de objeto, desempenho e organização de código.

Neste artigo, você aprenderá como as variáveis ​​estáticas funcionam em Java, bem como por que e como usar métodos estáticos.

A palavra-chave static em Java

A palavra-chave static é um dos recursos mais essenciais da linguagem de programação Java. Nós o usamos para definir variáveis ​​e métodos em nível de classe.

Aqui está um exemplo de como usar a palavra-chave static:

public class StaticKeywordExample {
private static int count = 0; // static variable  

public static void printCount() { // static method
  System.out.println("Number of Example objects created so far: " + count);
}
}

Como você pode ver acima, declaramos a variável count como uma variável estática, enquanto declaramos o método printCount como um método estático.

Quando uma variável é declarada estática na programação Java, significa que a variável pertence à própria classe, e não a qualquer instância específica da classe. Isso significa que existe apenas uma cópia da variável na memória, independentemente de quantas instâncias da classe forem criadas.

Aqui está um exemplo. Digamos que temos uma classe Department que possui uma variável estática chamada numberOfWork. Declaramos e incrementamos a variável estática no nível do construtor para mostrar o valor da variável estática sempre que o objeto de classe é criado.

public class Department{
  public static int numberOfWorker= 0;
  public String name;
  
  public Department(String name) {
      this.name = name;
      numberOfWorker++; // increment the static variable every time a new 							//Person is created
  }
}

Os resultados do código acima mostram que conforme criamos novos objetos Department, a variável estática numberOfWorker retém seu valor.

Quando imprimimos o valor de numberOfWorker no console, podemos ver que ele retém seu valor em todas as instâncias da Department classe. Isso ocorre porque há apenas uma cópia da variável na memória e quaisquer alterações na variável serão refletidas em todas as instâncias da classe.

Department dpt1 = new Department("Admin");
System.out.println(Department.numberOfWorker); // output: 1

Department dpt2 = new Department ("Finance");
System.out.println(Department.numberOfWorker); // output: 2

Department dpt3 = new Department ("Software");
System.out.println(Department.numberOfWorker); // output: 3

Também podemos usar a staticpalavra-chave para definir métodos estáticos.

Métodos estáticos são métodos que pertencem à classe e não a qualquer instância específica da classe. Os métodos estáticos podem ser chamados diretamente na própria classe sem a necessidade de criar uma instância da classe primeiro. Veja o código abaixo:

public class Calculation{
  public static int add(int a, int b) {
      return a + b;
  }

  public static int multiply(int a, int b) {
      return a * b;
  }
}

No código acima, a Calculationclasse tem dois métodos estáticos. Os métodos estáticos declarados podem ser chamados diretamente na classe Calculation sem criar uma instância da classe primeiro. Ou seja, você não precisa criar um objeto da classe Calculation antes de acessar as classes static add multiply .

int result = Calculation.add(5, 10);
System.out.println(result); // Output: 15

int result2 = Calculation.multiply(5, 10);
System.out.println(result2); // Output: 50

main()método em Java é um exemplo de método estático. O main()método é um método estático especial que é o ponto de entrada para aplicativos Java. A Math classe em Java também fornece muitos métodos estáticos que executam operações matemáticas.

public class Main {
  public static void main(String[] args) {
      System.out.println("Hello, World!");
  }
}

int result = Math.max(5, 10);
System.out.println(result); // Output: 10

O código acima mostra que o ponto de entrada para aplicativos Java é um método estático. Também mostra que o max()método é um método estático da classe Math e não requer que uma instância da classe Math seja criada.

Como você pode ver, os métodos estáticos podem ser úteis para fornecer funções utilitárias que não exigem a criação de um objeto de classe.

Conclusão

A palavra-chave static é uma ferramenta poderosa em Java que pode ajudar a resolver muitos desafios de programação. Ele auxilia no gerenciamento do consumo de memória, melhora a consistência do código e ajuda a acelerar os aplicativos.

Para evitar que problemas imprevistos surjam no código, é crucial usar a palavra-chave static com sabedoria e estar ciente de suas limitações.

O código que depende muito de variáveis ​​e métodos estáticos pode ser mais difícil de testar porque introduz dependências entre diferentes partes do programa. Variáveis ​​e métodos estáticos podem introduzir dependências ocultas entre diferentes partes do programa, tornando mais difícil raciocinar sobre como as alterações em uma parte do código podem afetar outras partes.

O código que depende muito de variáveis ​​estáticas também pode ser menos flexível e mais difícil de estender ao longo do tempo. As variáveis ​​estáticas também podem levar a problemas de simultaneidade se vários threads acessarem e modificarem a mesma variável ao mesmo tempo.

Por fim, se uma variável estática não for liberada ou descartada adequadamente quando não for mais necessária, isso poderá levar a vazamentos de memória e outros problemas de desempenho ao longo do tempo.

Ao usar variáveis ​​e métodos estáticos adequadamente, você pode criar um código eficiente e sustentável que será mais fácil de trabalhar ao longo do tempo.

Vida longa e prospera! 🖖

Compartilhe
Comentários (4)

R

Rafael - 05/08/2023 11:40

obrigado pelo texto, ajudou muito.

AO

Alan Oliveira - 08/03/2023 10:31

System.out.println("Parabens pelo artigo muito top!");


Djair Alves
Djair Alves - 11/03/2023 09:34

Bom artigo. Tens mais algum detalhe a falar sobre static em Java?

Gabriela Garcia
Gabriela Garcia - 08/03/2023 13:33

Sensacional, Alexandre! 👏