美文网首页技术干货程序员
java类的初始化顺序

java类的初始化顺序

作者: rainumdo | 来源:发表于2017-09-23 09:40 被阅读0次

    今天介绍下java类的初始化顺序。

    这里写了个类方便更直观的表达(代码太长没人看)

    public class InitSeqence {
        public static String staticField="静态属性";
        public String field="非静态属性";
        
        static{
            System.out.println(staticField);
            System.out.println("静态块");
        }
        
        {
            System.out.println(field);
            System.out.println("非静态块");
        }
        
        public InitSeqence(){
            System.out.println("InitSeqence构造函数");
        }
        
        public static void main(String[] args) {
            InitSeqence initSeqence=new InitSeqence();
        }
    }
    

    运行结果

    静态属性
    静态块
    非静态属性
    非静态块
    InitSeqence构造函数
    

    从结果我们可以看出

    1. 初始化static修饰的属性和块(不含方法),在类中定义的顺序,由上而下。
    2. 普通属性和块(不含方法),在类中定义的顺序,由上而下。
    3. 构造函数

    由staitc修饰代码会被放在静态代码区,这些属性和方法独立该类的任何对象,不依赖任何实例,被所有实例所共享。当JVM加载类时会先加载这些代码(常见于考试...),当两个类出现继承关系是,先加载父类的静态,然后子类静态,再是父类普通属性、方法、构造函数,然后是子类的。

    相关文章

      网友评论

        本文标题:java类的初始化顺序

        本文链接:https://www.haomeiwen.com/subject/vcaqextx.html