关于静态变量,静态代码块,非静态变量,构造方法中变量实例化顺序
LuceneUtils.java
1 import java.util.ArrayList; 2 import java.util.List; 3 4 @SuppressWarnings("unused") 5 public class LuceneUtils { 6 private String a = "string";//第四个个实例化,如果这个地方没有给a赋值那么不走这个语句(仅仅是声明). 7 private static Object o = null;//第一个实例化 8 private static int b = 1;//第二个实例化 9 private List<Object> list = new ArrayList<Object>();//第五个实例化 10 static{//第三个实例化 11 System.out.println("这里是静态代码块!"); 12 } 13 public LuceneUtils(){////第六个实例化 14 System.out.println("这里是构造方法!"); 15 } 16 } 17 //1.首先是静态代码块 18 //先是构造方法还是先是 19 //在执行构造方法之前要执行非静态的,并且是声明式赋值的.
Test.java
1 public class Test { 2 public static void main(String[] args) { 3 LuceneUtils luceneUtils = new LuceneUtils(); 4 System.out.println(luceneUtils); 5 } 6 } 7 //new这个LuceneUtils类的对象的时候是加载到ClassLoader里面. 8 //静态的有个顺序,从上到下执行.
另一篇总结:http://i.cnblogs.com/EditPosts.aspx?postid=3917139
作者:SummerChill 出处:http://www.cnblogs.com/DreamDrive/ 本博客为自己总结亦或在网上发现的技术博文的转载。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |