码迷,mamicode.com
首页 > 编程语言 > 详细

[java] java中的初始化顺序

时间:2017-05-06 11:57:39      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:todo   rate   void   ini   log   public   string   method   pre   

先看程序:

 1 package init_cls;
 2 
 3 class A{
 4 
 5     {System.out.println("i am in the class A!");}
 6     static { System.out.println("static is the class A");}
 7 }
 8 public class init_cls {
 9     {System.out.println("i am in the init_cls");}
10     static{System.out.println("i am static in the init_cls class");}
11     public static void main(String[] args) {
12         // TODO Auto-generated method stub
13         
14         A a=new A();
15         init_cls c=new init_cls();
16     }
17 
18 }

运行结果为:

i am static in the init_cls class
static is the class A
i am in the class A!
i am in the init_cls

从结果中可以看到,当我们只是使用一个类中的方法的时候(在这里使用的init_cls中的main),只初始化静态变量,所以最先输出:i am static in the init_cls class

之后当实例化一个类A的时候,先初始化其中的静态域static ,所以输出:static is the class A

                                        之后初始化非静态域,所以输出:i am in the class A!

最后,只有当我们实例化init_cls类的时候,才初始化了类A中的非静态域,有了输出:i am in the init_cls

 

这些和python中的初始化顺序非常不同,在python中加载一个包的时候,会从上到下全部初始化,遇到语句时候全部执行

[java] java中的初始化顺序

标签:todo   rate   void   ini   log   public   string   method   pre   

原文地址:http://www.cnblogs.com/fcyworld/p/6816017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!