Definición de variables de instancia y variables de clase.
Al declarar variables miembro, las modificadas con la palabra clave static se denominan variables de clase. Las variables de clase también se denominan variables estáticas o variables estáticas, mientras que las que no se modifican con la palabra clave static se denominan variables de instancia.
Por ejemplo:
classMain{floatx;//variable de instancia staticinty;//variable de clase}
Aviso:
La palabra clave estática debe colocarse antes del tipo de variable.
La diferencia entre variables de instancia y variables de clase.
1. Las variables de instancia de diferentes objetos son diferentes entre sí:
Una clase puede crear varios objetos diferentes utilizando el nuevo operador. A estos objetos se les asignarán diferentes variables miembro. Las variables de instancia asignadas a diferentes objetos ocupan diferentes espacios de memoria. del objeto.
2. Todos los objetos comparten variables de clase:
Si hay variables de clase en la clase, cuando se utiliza el nuevo operador para crear varios objetos diferentes, las variables de clase asignadas a estos objetos ocupan la misma memoria. Cambiar la variable de clase de un objeto afectará la clase de otros objetos. es decir, los objetos comparten variables de clase.
3. Acceda directamente a las variables de clase a través de nombres de clase:
Cuando se ejecuta un programa Java, el archivo de código de bytes de la clase se carga en la memoria. Si la clase no crea un objeto, no se asignará memoria a las variables de instancia de la clase. Sin embargo, a las variables de clase en la clase se les asigna el espacio de memoria correspondiente cuando la clase se carga en la memoria. Si esta clase crea objetos, entonces las variables de instancia de diferentes objetos son diferentes entre sí, es decir, se asignan diferentes espacios de memoria y las variables de clase ya no reasignan memoria. Todos los objetos comparten variables de clase, es decir, las variables de clase de. todos los objetos son iguales. El espacio de memoria ocupado por las variables de clase no se libera hasta que se cierra el programa.
Por lo tanto, se puede acceder a una variable de clase no solo a través de un objeto sino también directamente a través del nombre de la clase, mientras que se puede acceder a las variables de instancia de un objeto a través del objeto pero sin usar el nombre de la clase.