在 Java 中,类加载是一个重要的过程,它决定了代码的执行顺序。本文将通过一个示例来阐述类加载机制,以及静态代码块、构造方法和类方法的执行顺序。

public class personStatic {
    /*
     2. personStatic 的类加载过程中,执行静态代码块
     */
    static {
        System.out.println('这是静态代码块执行');
    }

    public void personStatic() {
        System.out.println('这是构造方法');
    }

    static class student {
        public void student() {
            System.out.println('这是学生方法');
            personStatic personStatic = new personStatic();
        }

    }

    // 1.启动main方法触发PersonStatic类的类加载
    public static void main(String[] args) {
        // 3. 类加载结束后,启动main方法
        System.out.println('这是main方法');
        // 4. 创建student类 非静态上下文 无法访问 静态上下文
        student s = new student();
    }

}

为什么没有输出 '这是学生方法'?

没有输出 '这是学生方法' 是因为在 student 类中的方法名和类名相同,导致该方法被误认为是构造方法。在创建 student 对象时,实际上是调用了默认的构造方法,而不是 student 方法。

如果想要输出 '这是学生方法',需要将 student 方法改名为其他名称。例如:

public void showStudent() {
    System.out.println('这是学生方法');
    personStatic personStatic = new personStatic();
}

通过以上分析,我们可以更好地理解 Java 类加载机制,以及静态代码块、构造方法和类方法的执行顺序。在实际编程中,需要注意方法命名规范,避免出现类似的误解。

Java 类加载机制:静态代码块和构造方法的执行顺序

原文地址: https://www.cveoy.top/t/topic/qkpo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录