Java 静态代码块讲解

原创 2015年11月19日 16:46:58

结合《Thinking in Java》讲一讲自己对静态代码块的理解。Java静态代码块就是一段跟在static关键字后面的代码,用来将多个静态初始化动作组织成代码块,并且每个类的static代码块仅会执行一次。在以下两种情况下static代码块会被执行:

情况1:当首次生成这个类的一个对象时。

情况2:首次访问属于这个类的静态数据成员时。

public class ExplicitStatic {
    public static void main(String[] args) {
        new Cups();              //①
        Cup cup = Cups.cup1;     //②
    }
}

class Cup {

    Cup(int i) {
        System.out.println("执行cup" + i + "的构造方法");
    }

}

class Cups {

    static Cup cup1;
    static Cup cup2;

    static {
        System.out.println("执行static代码块");
        cup1 = new Cup(1);
        cup2 = new Cup(2);
    }
}  


main方法中单独执行语句①,触发情况1。单独执行语句②,触发情况2。二者控制台结果皆为:

执行static代码块
执行cup1的构造方法
执行cup2的构造方法

当同时执行语句①②时,控制台结果依然为:

执行static代码块
执行cup1的构造方法
执行cup2的构造方法

说明static代码块在同一个类中仅执行一次。

相关文章推荐

Java误区: 静态代码块,会在类被加载时自动执行?

JAVA静态代码块会在类被加载时自动执行?         很多Java开发者的思想,被这个思想深深的论剑了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸。         如:http...

java基础--静态(函数、代码块)、单例设计模式、继承、final修饰符

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1、静态关键字:static    1)用法:       static是一个修饰符,用于修...

java静态代码块和构造方法执行顺序

http://blog.sina.com.cn/s/blog_49cc672f0100f8f2.html 先看看下面几个类,然后判断它们的输出public class A {    static{  ...
  • cynhafa
  • cynhafa
  • 2011年03月15日 11:27
  • 644

Java中初始化对象的顺序,静态代码块的用法以及Static的用法详解

(一)java 静态代码块 静态方法区别 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他...
  • dq3wrr
  • dq3wrr
  • 2014年09月21日 10:41
  • 1524

JAVA基础第六天学习日记_static关键字、文档、静态代码块、单例开发模式

---------------------- android培训、java培训、期待与您交流! ---------------------- 静态变量,方法函数存放在方法区。 静态变量...

java中静态代码块的用法 static用法详解

java中静态代码块的用法 static用法详解 (一)java 静态代码块 静态方法区别 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要...
  • zh521zh
  • zh521zh
  • 2015年04月09日 16:07
  • 165

Java中静态代码块

(一)java 静态代码块 静态方法区别 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他...

java 学习之路——线程2(synchronized静态代码块)

实现同步方法的方式有两种:   1.用synchronized关键字修饰的方法可以实现线程的同步;   2.用synchronized代码块修饰的部分实现线程的同步。 以下为第二种方式的实现: ...

JAVA中静态代码块及对象的初始化顺序

Java中静态代码块及对象的初始化顺序。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 静态代码块讲解
举报原因:
原因补充:

(最多只允许输入30个字)