Java 程序中时常用些 static {} 这样的结构。
这样的结构叫 static块 ,一般是一个类初始化时运行的代码。 注意,是类的初始化,不是对象的初始化。
也就是你在定义对象是,它运行的初始化代码,并且只有第一次定义时才运行。之后就不再运行初始化了。
一个类中可以可以有很多static块。static块按顺序执行。
看以下代码:
public class TestStatic{
 static{
    System.out.println(1);
 }
 
 static{
    System.out.println(2);
 }
 public static void main(String[] args){
    System.out.println(5);
 }
 static{
    System.out.println(3);
 }
 
 static{
    System.out.println(4);
 }
}
执行的结果是
1
2
3
4
5
一目了然,首先调用的是static静态快的代码,然后调用启动方法.而static块的执行顺序是由代码的编写顺序执行的过程.
static块大家用得比较少,其实就是在对象生成之际产生一系列的static变量。
 
可以参照Hibernate的helper class
import org.hibernate.*;
import org.hibernate.cfg.*;

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

这个时候,就能明白,当然,是前提有用到这个的