标签: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中加载一个包的时候,会从上到下全部初始化,遇到语句时候全部执行
标签:todo rate void ini log public string method pre
原文地址:http://www.cnblogs.com/fcyworld/p/6816017.html