zoukankan      html  css  js  c++  java
  • 类的初始化顺序

    一 , :当程序执行时,当需要用到某个类时,Java执行引擎会先检查类是否已加载,若没有加载,则加载。在执行类的加载过程中,会先初始化静态成员变量和静态代码块,静态成员变量和静态代码块的执行顺序按照其代码顺序。

    二,:在生成对象时,会先初始化成员变量,然后再执行构造器。其中要注意类的加载和类的生成对象是两个过程,只要用到某类,该类就一定会被加载;但不一定需要实例化生成对象。比较下面程序1和程序2:

    程序1:

    public class Test {
        C c = new C();
        static B b1 = new B();
        public Test () {
            
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Test t ;
        }
    
        
        static class B{
            public B() {
                System.out.println("B");
            }
            static {
                System.out.println("static B");
            }
            public static void printFun() {
                System.out.println("function B ");
            }
        }
        static class C{
            public C() {
                System.out.println("C");
            }
            static {
                System.out.println("static C");
            }
            public static void printFun() {
                System.out.println("function C ");
            }
        }
    }

    执行结果为:

    static B
    B

    程序二:

    public class Test {
        C c = new C();
        static B b1 = new B();
        public Test () {
            
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Test t = new Test ();
            
            
        }
    
        
        static class B{
            public B() {
                System.out.println("B");
            }
            static {
                System.out.println("static B");
            }
            public static void printFun() {
                System.out.println("function B ");
            }
        }
        static class C{
            public C() {
                System.out.println("C");
            }
            static {
                System.out.println("static C");
            }
            public static void printFun() {
                System.out.println("function C ");
            }
        }
    }

    执行结果为:

    static B
    B
    static C
    C

  • 相关阅读:
    git安装和简单配置
    IDEA调试服务器上部署的程序
    fastjson的@JSONField注解的一点问题
    Spring quartz定时任务service注入问题
    MySql 插入数据库报错 Incorrect string value: 'xF0xA0x86xA2'
    Window启动Zookeeper报错java.lang.NumberFormatException: For input string:
    wget命令下载文件
    遇见的面试题
    使用jackson来进行数组格式的json字符串转换成List。
    边距重叠的三种情况
  • 原文地址:https://www.cnblogs.com/a-old-foolish/p/11079429.html
Copyright © 2011-2022 走看看