Camino de aprendizaje de Java: el uso de palabras clave estáticas

Camino de aprendizaje de Java: el uso de palabras clave estáticas

Visión general

static Es un modificador estático de un programa Java ¿Qué es un modificador estático?

Como todos sabemos, el sistema asigna automáticamente cualquier variable o código en el programa para almacenar memoria en el momento de la compilación, y lo que se denomina estático significa que la memoria asignada siempre existirá después de la compilación y la memoria no se liberará hasta que el programa se ejecuta y sale de este espacio. Es decir, mientras el programa se esté ejecutando, esta memoria siempre existirá.

static Significa "global" o "estático", utilizado para modificar variables miembro y métodos miembro, y también puede formar bloques de código estático estático, pero no existe el concepto de variables globales en el lenguaje Java.

Uno, atributo estático

Según se clasifiquen estáticamente las variables miembro de la clase, existen dos tipos:

  • Uno es la variable modificada por estática, llamada variable estática o variable de clase;
  • La otra es una variable que no es modificada por estática, llamada variable de instancia.

Las diferencias entre los dos son:

  • JVM asigna memoria solo una vez para estática, y solo hay una copia de las variables estáticas en la memoria (ahorro de memoria);
  • Complete la asignación de memoria de variables estáticas en el proceso de carga de la clase;
  • La carga de variables estáticas precede a la carga de instancias;
  • Cada vez que se crea una instancia, la memoria se asignará a la variable de instancia y las variables de instancia entre las instancias no se afectan entre sí;

Momento de uso : En circunstancias normales, perteneceremos a una clase y no configuraremos variables que cambian con el objeto de instancia como variables estáticas.

permiso de acceso

Objeto de llamada Atributo de clase Atributos de instancia
clase
Objeto de instancia
public class Demo {
    
    
    public static void main(String[] args) {
    
    
//        直接通过 Man 类调用 gender 属性
        System.out.println(Man.gender);

//        实例属性
        Man m1 = new Man();
        m1.name = "张三";
        Man m2 = new Man();
        m2.name = "李四";
        System.out.println(m1.name);
        System.out.println(m2.name);
//        通过实例对象调用 gender 属性
        System.out.println(m1.gender);

//        通过 m1 修改了类属性,那么 m2 输出的类属性也会变化
        m1.gender = "女";
        System.out.println(m2.gender);
    }
}

class Man {
    
    
    String name;
    static String gender="男";
}

Dos, método estático

Los métodos estáticos se pueden llamar directamente por el nombre de la clase y también se puede llamar a cualquier instancia.

Por lo tanto , las palabras clave this y super no se pueden usar en métodos estáticos, y no se puede acceder directamente a las variables de instancia y los métodos de instancia de la clase (es decir, variables miembro y métodos miembro sin estática), y solo variables miembro estáticas y métodos miembro de se puede acceder a la clase. ¡Porque los miembros de la instancia están asociados con objetos específicos!

Debido a que el método estático es independiente de cualquier instancia, se debe implementar el método estático, no un resumen abstracto.

Momento de uso : generalmente, establecemos el método de modificación del atributo de clase y el método de la clase de herramienta como método de clase.

Permiso de llamada

Objeto de llamada Método de clase Método de instancia
clase
Objeto de instancia

Tres, bloque de código estático

Un bloque de código estático también se denomina bloque de código estático. Es un bloque de instrucción estática en una clase que es independiente de los miembros de la clase. Puede haber varios y la posición se puede colocar a voluntad. No está en ningún cuerpo de método. Los bloques de código ordinario se ejecutan cuando se crea una instancia, en la que puede acceder a los atributos y métodos de la clase, así como a los atributos y métodos de la instancia.

JVM ejecutará estos bloques de código estático al cargar una clase. Si hay varios bloques de código estático, la JVM los ejecutará en el orden en que aparecen en la clase, y cada bloque de código solo se ejecutará una vez.

Objeto Acceder a los atributos de clase y métodos de clase Acceso a las propiedades y métodos de la instancia
bloque de código estático
Bloque de código normal
public class Demo {
    
    
    static {
    
    
        System.out.println("Hello!");
    }

    public static void main(String[] args) {
    
    
        System.out.println(new Man());;
    }

    static {
    
    
        System.out.println("Bye!");
    }
}

class Man {
    
    
    {
    
    
        System.out.println("Nice to meet you.");
        System.out.println(this.getClass());
    }
}
// Hello!
// Bye!
// Nice to meet you.
// class Man

A través del ejemplo anterior, podemos encontrar que el bloque de código estático se ejecuta automáticamente primero en orden.

Si necesita inicializar variables estáticas mediante cálculos, podemos procesarlas declarando un bloque de código estático, que se ejecuta solo una vez cuando se carga la clase. Si necesitamos manipular el objeto de instancia al crear la instancia, podemos usar bloques de código ordinarios.

Supongo que te gusta

Origin blog.csdn.net/qq_43580193/article/details/112592830
Recomendado
Clasificación