Executando verificação de segurança...
0

Vamos lá.
Existem informações fixas na classe.
Ou então seu método só processa os argumentos e devolve um valor.

Então para quê criar uma instância da Classe?
É para isso que existem.

Sem método estático, teríamos algo + ou - assim, sim eu sei, a sintaxe tá errada, mas quero só passar uma ideia.

Calculo objCalculo = new new Calculo();
resposta = objCalculo.dobro(80);

Com método estático, note que usamos a classe diretamente sem precisar instanciar
resposta = Calculo.dobro(80);

O método dobro() não depende de nenhum valor que está nas propriedades do objeto, então ele pode sim ser estático.

Se precisasse de algum valor que está na propriedade da instância, não daria.
Lembre-se que vários objetos da mesma classe podem ter valores diferentes nas sua propriedades.

Outra vantagem. Como seu método é estático, isso economiza memória, você não vai ter várias copias dele para cada instância, mas apenas uma cópia por Classe.

Carregando publicação patrocinada...
2

Como seu método é estático, isso economiza memória, você não vai ter várias copias dele para cada instância, mas apenas uma cópia por Classe.

Não.

Isso só é verdade para os campos não estáticos da classe (cada instância terá uma cópia deles). Mas para métodos isso não se aplica.

Só existe uma cópia de cada método na JVM, independente de ser estático ou não. O "truque" aqui é que quando um método de instância é chamado, a própria instância é passada automaticamente como o primeiro parâmetro, e este é referenciado como this. Este mecanismo ocorre internamente e é transparente para o programador.

Em algumas linguagens esse mecanismo é explícito. Um exemplo é Python, no qual o primeiro parâmetro de todo método sempre é a instância da classe (que por convenção é chamado de self).

Leitura complementar: