作家
登录

对于Java类加载过程中的顺序问题探究

作者: 来源: 2012-06-12 17:01:27 阅读 我要评论

以前记得static代码块貌似是Java类加载过程中优先级最高的,但是最近几天写代码发现不是这样的,因为static变量的优先级要比static代码块高得多,所以因此我犯了不少错误,下面以一个例子来说明一下一个类初始化为对象的时候的加载过程:

  1. package com.bird.jdbc;  
  2.  
  3.  
  4. public class Test {  
  5.       
  6.       
  7.     private static A a = new A();  
  8.     private final static F f= new F();  
  9.     private B b = new B();  
  10.       
  11.     static{  
  12.         System.out.println("c");  
  13.     }  
  14.       
  15.     public Test(){  
  16.         System.out.println("Test");  
  17.     }  
  18.       
  19.     public static void main(String[] args){  
  20. //      Test t = new Test();  
  21.         try {  
  22.             Class.forName("com.bird.jdbc.Test");  
  23.         } catch (ClassNotFoundException e) {  
  24.             // TODO Auto-generated catch block  
  25.             e.printStackTrace();  
  26.         }  
  27.     }  
  28. }  
  29.  
  30. class A{  
  31.     public A(){  
  32.         System.out.println("A");  
  33.     }  
  34. }  
  35.  
  36. class B{  
  37.     public B(){  
  38.         System.out.println("B");  
  39.     }  
  40. }  
  41.  
  42.  
  43. class F{  
  44.     public F(){  
  45.         System.out.println("F");  
  46.     }  

大家可以看到,直接运行Test t = new test();这句话,运行结果为

  1. A  
  2. F  
  3. c  
  4. B  
  5. Test 

所以是先static变量,然后是static的代码块,然后才是普通变量,最后是构造函数

如果是运行Class.forName()函数的话,运行结果为

  1. A  
  2. F  

还是这样,先是static变量,然后才是static代码块,所以那种对于class.Forname加载类,只调用static代码块的误区要克服,因为还有一个static代码块在等着你,呵呵,我得记录下来以示警戒。

原文链接:http://blog.csdn.net/a352193394/article/details/7255277

【编辑推荐】

  1. Java多线程之消费者生产者模式
  2. 深入理解Java对象序列化
  3. JavaScript继承详解
  4. Java自定义范型的应用技巧
  5. Java中Class对象详解

  推荐阅读

  Java反射机制剖析:简单谈谈动态代理

通过《Java反射机制剖析:定义和API》和《Java反射机制剖析:功能以及举例》的学习,已经对反射有了一定的了解,这一篇通过动态代理的例子来进一步学习反射机制。1. 代理模式代理模式就是为其他对象提供一种代理来控>>>详细阅读


本文标题:对于Java类加载过程中的顺序问题探究

地址:http://www.17bianji.com/kaifa2/Java/1065.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)