Definição de variáveis de instância e variáveis de classe
Ao declarar variáveis de membro, aquelas modificadas com a palavra-chave static são chamadas de variáveis de classe. As variáveis de classe também são chamadas de variáveis estáticas ou variáveis estáticas, enquanto aquelas que não são modificadas com a palavra-chave static são chamadas de variáveis de instância.
Por exemplo:
classMain{floatx;//variável de instância staticinty;//variável de classe}
Perceber:
A palavra-chave static precisa ser colocada antes do tipo da variável.
A diferença entre variáveis de instância e variáveis de classe
1. As variáveis de instância de diferentes objetos são diferentes umas das outras:
Uma classe pode criar vários objetos diferentes usando o operador new. A esses objetos serão atribuídas diferentes variáveis de membro. As variáveis de instância atribuídas a diferentes objetos ocupam diferentes espaços de memória. do objeto.
2. Todos os objetos compartilham variáveis de classe:
Se houver variáveis de classe na classe, ao usar o operador new para criar vários objetos diferentes, as variáveis de classe atribuídas a esses objetos ocuparão a mesma memória. Alterar a variável de classe de um objeto afetará a classe de outros objetos. é dizer que os objetos compartilham variáveis de classe.
3. Acesse diretamente variáveis de classe por meio de nomes de classe:
Quando um programa Java é executado, o arquivo de bytecode da classe é carregado na memória. Se a classe não criar um objeto, as variáveis de instância na classe não receberão memória. No entanto, as variáveis de classe na classe recebem espaço de memória correspondente quando a classe é carregada na memória. Se esta classe cria objetos, então as variáveis de instância de diferentes objetos são diferentes umas das outras, ou seja, diferentes espaços de memória são alocados e as variáveis de classe não realocam mais memória. Todos os objetos compartilham variáveis de classe, ou seja, as variáveis de classe de. todos os objetos são iguais. O espaço de memória ocupado pelas variáveis de classe não é liberado até que o programa seja encerrado.
Portanto, uma variável de classe pode ser acessada não apenas através de um objeto, mas também diretamente através do nome da classe, enquanto as variáveis de instância de um objeto podem ser acessadas através do objeto, mas não usando o nome da classe.