黑马程序员-java语言特点4:静态方法变量的初始化

        加载一个类时,它的静态初始化代码被执行。静态初始化代码段与静态变量的初始化同时进行,它们按词法顺序执行。例如,一个类c的声明如下:
class c{
        static int a=1;
        static {
           a++;
            b=7;
        }B
        static b=2;
当c被加载时,按以下顺序执行:
    *a置为1。
    *静态初始化段执行,a置为2,b置为7。
    *b置为2.
        如果静态初始化代码引用了其他未加载的类,这个类将被加载,它的静态初始化代码将先被执行。在静态初始化期间引用未加载的类,该类先加载并初始化。在初始化序列中,若引用到在它之前的未初始化的类时,就会发生循环。这将导致一个NoClassDefFoundException错误。
        例如,当类A加载时,它的静态初始化代码被执行。但A的静态初始化代码引用了另外一个未加载的类B。这样B将被加载,它的静态初始化代码要在A之前执行,A的静态初始化随后执行。但如果B中静态初始化代码代码引用A,就导致了循环引用。

    详细请查看:http://edu.csdn.net/heima
posted @ 2012-04-16 17:28  lcode  阅读(193)  评论(0编辑  收藏  举报