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

  • 相关阅读:
    LVM逻辑卷管理练习
    浅谈TCP三次握手和四次分手
    centos模拟创建CA和申请证书
    破解root口令
    shell脚本编程进阶总结
    基于FIFO的串口发送机设计
    流水线方式LUT查表法乘法器
    verilog中有符号整数说明及除法实现
    LUT查表法乘法器所犯下错误。。。。
    似然函数
  • 原文地址:https://www.cnblogs.com/a-old-foolish/p/11079429.html
Copyright © 2011-2022 走看看