静态代码块:定义在类中,使用static修饰的代码块,在类加载时只执行一次,无论在类的那个位置。与对象无关,不论产生多少对象静态代码块只在类加载时执行一次。

public class Test{
    public static void main(String[] args) {
        System.out.println("=====进入主方法=====");
        Person person = new Person("七七");
    }
}
class Person {
    String name;
    public Person(String name) {
        this.name = name;
        System.out.println("Person有参构造");
    }
    static {
        System.out.println("Person的静态代码块");
    }
}

 

注意:主类中的静态代码块优先于主方法(main方法)执行。

public class Test{
    static {
        System.out.println("****主类静态代码块****");
    }
    public static void main(String[] args) {
        System.out.println("=====进入主方法=====");
    }
}

 

✨✨✨关于静态代码块和静态成员变量在内存中执行逻辑。

public class Test{
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.age);
    }
}
class Person {
    static int age = 10;
    static {
        age = 100;
        System.out.println("Person的静态代码块");
    }
}

 static修饰的成员变量,在类定义的时候就会有初始值 age = 10 ,被存放在方法区中,这个类只是被定义了,但还没有加载。

静态代码块,当主方法使用了Person,就会需要把Person从方法区加载到内存当中,类此时加载,静态代码块也就在此时执行,age = 100