Bloque de código El bloque de código estático inicializa el orden de ejecución del constructor en el lugar

Descripción del problema:

Java crea una instancia de una clase. Si esta clase no solo tiene un constructor, sino también un bloque de código, un bloque de código estático y una instancia de otra clase que se inicializa in situ, ¿cuál es el orden de ejecución del código?


Muestras y resultados de ejecución

clase de gente

package Extends;

import Dog.Dog;

class people {
    
    
    public int age=100;
    public String name;

    Dog dog=new Dog();

    public people() {
    
    
        System.out.println("people");
    }
    {
    
    
        System.out.println("people的代码块");
    }
    static {
    
    
        System.out.println("people中的静态代码块");
    }
}

clase de perro

public class Dog {
    
    
    String name;
    int age;
    public Dog(){
    
    
        name="大黄";
        age=3;
        System.out.println("dog的初始化");
    }
}

Función principal

public class Main {
    
    
    public static void main(String[] args) {
    
    
        people p1=new people();
        System.out.println("---------");
        people p2=new people();
    }
}

Inserte la descripción de la imagen aquí

Análisis de causa:

Aquí, en la clase de personas, no solo hay bloques de código, bloques de código estático y métodos de construcción, sino que también se inicializa una instancia de perro en el lugar. De los resultados, podemos ver que la ejecución del bloque de código estático es siempre la el primero, pero una vez ejecutado, el siguiente nivel es: inicialización en el lugar y bloque de código. Quien escriba los dos ejecutará el primero, y el último es el método de construcción.


import Dog.Dog;

class people {
    
    
    public int age=100;
    public String name;
    public people() {
    
    
        System.out.println("people");
    }
    {
    
    
        System.out.println("people的代码块");
    }
    static {
    
    
        System.out.println("people中的静态代码块");
    }
    Dog dog=new Dog();
}

Inserte la descripción de la imagen aquí
En este momento, la construcción de perro está después del bloque de código.

Supongo que te gusta

Origin blog.csdn.net/weixin_45070922/article/details/112991240
Recomendado
Clasificación