Loading

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

众所周知在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     //静态初始化  优先级:1
17     static{
18         System.out.println("静态初始化");
19     }
20     
21     
22     public static void main(String[] args) {
23         Demo03 demo=new Demo03("zhangs",1);
24     }
25 }
结果:
静态初始化
非静态初始化
构造函数

 

posted @ 2015-04-22 12:13  JamKong  阅读(301)  评论(0编辑  收藏  举报