Pergunta sobre Static

Olá gostaria de saber o que são coisas static, eu até uso o implemento static mas nunda entendi sua funcionalidade, sempre que eu leio algo a respeito minha dúvida só aumenta. Exemplo:

public class Teste{

public static void main(String[] args){

}
}

Não entendo o porquê o uso do static, sem falar que esse valor aparentemente pôde ser definido para variáveis também. Se alguém puder me explicar ficarei muito agradecido.

De forma bem simples e grosseira o static faz com que um método ou atributo pertença a classe e não ao objeto! (Entenda objeto como sendo uma instância da classe)

Exemplo:

public class Teste {
    public static String frase = "Uma frase qualquer";
    public String nome;
}

Se eu quiser acessar a propriedade frase da classe Teste, eu não preciso de uma instância desta classe para obtê-lo, pois o mesmo pertence a classe e não ao objeto.
Sendo assim, se eu modificar o valor da propriedade frase, por ele pertencer à classe esse valor será refletido para todo em qualquer ponto que eu tente acessá-lo, ou seja, ele será único para todo mundo.

Já a propriedade nome ela não pertence à classe, ou seja, para cada instância de um objeto do tipo Teste a propriedade nome pode ter valores totalmente diferentes e únicos para cada instância.

3 curtidas

Então uma variável ou atributo com o static não precisa ser instanciado pois pertence a classe? Então a diferença é isso?

Sendo o mais simplista possível, é exatamente isso!

1 curtida