Static significa "global" o "estático", que se utiliza para modificar las variables de los miembros y los métodos de miembros, y también puede formar bloques de código estáticos estáticos, pero no hay un concepto de variables globales en el lenguaje Java.
Las variables miembros y los métodos de miembros modificados por Static son independientes de cualquier objeto de la clase. Es decir, no depende de instancias específicas de clase y es compartida por todas las instancias de la clase.
Mientras se cargue esta clase, la máquina virtual Java puede encontrarlas en el área de método del área de datos de tiempo de ejecución de acuerdo con el nombre de la clase. Por lo tanto, se puede acceder a un objeto estático antes de que se cree cualquiera de sus objetos sin referencia a ningún objeto.
Las variables de miembros estáticos y los métodos miembros modificados con público son esencialmente variables globales y métodos globales.
Las variables estáticas se pueden modificar con privado, lo que indica que esta variable se puede usar en el bloque de código estático de la clase, o en otros métodos de miembros estáticos de la clase (por supuesto, también se puede usar en métodos de miembros no estatales: sin sentido ), pero no se puede usar en otras clases, es importante referirse directamente al nombre de clase en la clase. De hecho, debe comprender que el privado es un permiso de acceso restringido, y estática significa que puede usarse sin instanciación, lo que hará que sea mucho más fácil de entender. El efecto de la estática anterior con otras palabras clave de acceso también es similar.
Las variables de los miembros y los métodos de miembros modificados por Static se llaman comúnmente variables estáticas y métodos estáticos.
Nombre de clase.
Nombre de la clase.
Se utiliza un bloque de código estático para representar un bloque de código estático.
1. Variables estáticas
Las variables de los miembros de la clase se pueden clasificar de acuerdo con si se modifican estáticamente: una es una variable que es estática o variable de clase;
La diferencia entre los dos es:
Para las variables estáticas solo tienen una copia en la memoria (ahorro de memoria), el JVM solo asigna la memoria una vez que se puede completar la memoria de las variables estáticas durante la carga de la clase. Curso, también se puede usar a través de objetos.
Por ejemplo, las variables, si no se crea una instancia, la memoria se asignará a la variable de instancia una vez.
Por lo tanto, las variables estáticas generalmente se usan cuando se necesitan las siguientes dos funciones:
Al compartir valores entre objetos, al acceder a las variables
2. Método estático
Los métodos estáticos se pueden llamar directamente a través de los nombres de clases, y también se puede llamar a cualquier instancia.
Por lo tanto, las palabras clave de este y Super no se pueden usar en métodos estáticos, y las variables de instancia y los métodos de instancia de la clase que pertenecen no se puede acceder directamente (es decir, variables de miembros y métodos miembros de miembro sin estáticos), y solo pueden acceder a la estática Variables de miembros y métodos miembros de la clase perteneciente.
¡Porque los miembros de la instancia están asociados con objetos específicos! ¡Esto requiere comprender y comprender la verdad, no la memoria! ! !
Debido a que el método estático es independiente de cualquier instancia, el método estático debe implementarse, no un resumen de resumen.
Por ejemplo, para facilitar la llamada de métodos, todos los métodos en la clase de matemáticas en la API de Java son estáticos, y los métodos estáticos dentro de las clases generales también son convenientes para que otras clases llamen a este método.
Los métodos estáticos son una clase especial de métodos dentro de una clase.
3. Bloque de código estático
Los bloques de código estáticos también se denominan bloques de código estáticos. se ejecuta cuando el JVM cargue la clase. Por ejemplo:
Public Class5 {Private Static int a; println (tb); ;
Resultados de ejecución:
3
hhahhahah
1000
4
5
Usando bloques de código estáticos, puede asignar valores a algunas variables estáticas. instancia.
4. ¿Qué significa Static y Final juntos?
¡Static Final se usa para modificar las variables de los miembros y los métodos de miembros, que pueden entenderse simplemente como "constantes globales"!
Para las variables, la representación no se puede modificar una vez que se da el valor y se puede acceder por el nombre de la clase.
Para los métodos, la representación no se anula y se puede acceder directamente a través del nombre de la clase.
A veces desea definir un miembro de la clase para que use completamente independiente de cualquier objeto de esa clase. Por lo general, se debe acceder a un miembro de la clase a través de un objeto de su clase, pero se puede crear un miembro que puede ser utilizado por él mismo sin tener que consultar una instancia específica. Este miembro se puede crear precediendo la declaración del miembro. Si un miembro se declara estático, se puede acceder antes de que se cree cualquier objeto de su clase sin tener que consultar ningún objeto. Puede declarar tanto métodos como variables como estáticos. El ejemplo más común de un miembro estático es Main (). Debido a que Main () debe llamarse cuando el programa comienza a ejecutarse, se declara estático.
Una variable declarada como estática es esencialmente una variable global. Cuando se declara un objeto, no se genera una copia de la variable estática, pero todas las variables de instancias de la clase comparten la misma variable estática. Los métodos declarados como estáticos tienen las siguientes restricciones:
Solo pueden llamar a otros métodos estáticos.
Solo tienen acceso a datos estáticos.
No pueden referirse a esto o Super de ninguna manera (la palabra clave Super está relacionada con la herencia, descrita en el próximo capítulo).
Si necesita inicializar su variable estática mediante cálculo, puede declarar un bloque estático, que se ejecuta solo una vez cuando la clase se carga. El siguiente ejemplo muestra la clase con un método estático, algunas variables estáticas y un bloque de inicialización estática:
// Demuestra variables, métodos y bloques estáticos. println ("a =" + a); void main (string args []) {meth (42);
Una vez que se carga la clase USestatic, se ejecutan todas las declaraciones estáticas. Primero, A se establece en 3, luego el bloque estático se ejecuta (imprimiendo un mensaje), y finalmente, B se inicializa a A*4 o 12. Luego llame a main (), main () llama meth () y pase el valor 42 a x. Las declaraciones 3 println () se refieren a dos variables estáticas A y B, y la variable local x.
Nota: Es ilegal referirse a cualquier variable de instancia en un método estático.
Aquí está el resultado del programa:
Bloque estático inicializado.
x = 42
a = 3
b = 12
Fuera de las clases que los definen, los métodos y variables estáticas se pueden usar independientemente de cualquier objeto. De esta manera, solo necesita agregar un operador DOT después del nombre de la clase. Por ejemplo, si desea llamar a un método estático desde fuera de la clase, puede usar el siguiente formato general:
classname.method ()
Aquí, ClassName es el nombre de la clase, donde se define el método estático. Como puede ver, este formato es similar al de llamar a métodos no estáticos a través de variables de referencia de objetos. Se puede acceder a una variable estática en el mismo formato: el operador de puntos de nombre de clase. Esta es una versión de control de cómo Java implementa funciones globales y variables globales.
Aquí hay un ejemplo. En Main (), se accede al método estático CallMe () y a la variable estática B fuera de su clase.
clase staticDemo {static int a = 42; ) {StaticDemo.callMe ();
Aquí está el resultado del programa:
a = 42
B = 99
No se puede acceder al miembro estático por las instancias creadas por la clase en la que se encuentran.
Si un miembro sin modificación estática es un miembro del objeto, pertenece a cada objeto.
El miembro con modificación estática es un miembro de la clase, que puede llamarse directamente por una clase y compartido por todos los objetos.
A través de este artículo, ¿ha comprendido el papel de la estática en Java?