浅谈Java中静态初始化块跟非初始化块

来源:互联网 发布:淘宝白夜追凶视频电话 编辑:程序博客网 时间:2024/04/30 12:34
众所周知在JAVA编程语言中有两种初始化块:
 
静态初始化块
非静态初始化块
他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别
 
静态初始化块
定义:
 
        static{}
 
执行优先级高于非静态的初始化块,它会在对象装载到系统的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。它将在类加载时被执行。
 
执行优先级:1
 
非静态初始化块
定义:
 
        {}
 
执行的时候如果有静态初始化块,先执行静态初始化块再执行非静态初始化块,在每个对象生成时都会被执行一次,它可以初始化类的实例变量。非静态初始化块会在构造函数执行时,在构造函数主体代码执行之前被运行。
 
执行优先级:2
 
实例:
 1 package com.Demo; 2 public class Demo03 { 3     String name; 4     int age; 5     //构造函数初始化  优先级:3 6     public Demo03(String name,int age) { 7         this.name=name; 8         this.age=age; 9         System.out.println("构造函数");10     }11     12     //非静态初始化  优先级:2 13     {14         System.out.println("非静态初始化");15     }16     //静态初始化  优先级:117     static{18         System.out.println("静态初始化");19     }20     21     22     public static void main(String[] args) {23         Demo03 demo=new Demo03("zhangs",1);24     }25 }
结果:
静态初始化
非静态初始化
构造函数

 

0 0
原创粉丝点击