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

【java】静态代码块

时间:2015-03-16 06:27:35      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:java   静态代码块   

静态代码块

  • 格式:

    static

    {

       静态代码块中的执行语句

    }

  • 特点:

    随着类的加载而执行,只执行一次,用于给类进行初始化,并优先于主函数执行

    考虑如下java语句

class StaticCode
{
    static
    {
        System.out.println("a");
    }
}
public class Demo {
    static
    {
        System.out.println("b");
    }
    public static void main(String[] args)
    {
        new StaticCode();
        new StaticCode();
        System.out.println("end");
    }
    static
    {
        System.out.println("c");
    }
  
}

输出结果为:

b

c

a      <==虽然有两个调用StaticCode的语句,但是因为其中只包含静态代码块,而静态代码块只执行

          一次,所以只输出一个a

end


只有涉及到类中的内容的时候,类才会加载,静态代码块才会执行

StaticCode m = null;   <==类没有被加载

s = new StaticCode();  <==类被加载了,因为用到了类中的构造函数StaticCode(),所以静态代码块

                          会被执行

所以判断一个类有没有被加载,可以用静态代码块来验证

class StaticCode
{
    StaticCode()
    {
        System.out.println("c");
    }
    static
    {
        System.out.println("a");            I
    }
    
    {
        System.out.println("b");            II
    }
    
    StaticCode(int x)
    {
        System.out.println("hah");          III
    }
    
    public static void test()
    {
        System.out.println("succeed");
    }
}
public class Demo {
    
    public static void main(String[] args)
    {
        new StaticCode(5);
    }
    
  
}

I    -----  静态代码块给类进行初始化

II   -----  构造代码块给对象进行初始化

III  -----  构造函数给对应对象进行初始化

输出结果:

a

b

hah


注意:静态代码块只可以访问静态变量

      构造代码块可以访问到

【java】静态代码块

标签:java   静态代码块   

原文地址:http://caoyue.blog.51cto.com/9876038/1620598

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