在网上找到一个连接数据库的文章里面有下面这段程序:
public class DBPool {
private static DataSource pool;
static {
Context env = null;
try {
env = (Context) new InitialContext().lookup("java:comp/env");
pool = (DataSource) env.lookup("jdbc/DBPool");
                   }

public static DataSource getPool() {
return pool;
}
}书里说static块中的内容仅在生成该对象或初次访问该静态数据成员时会被执行,如果程序中有多个类,每个类中都使用getPool()方法,static中的语句还会被执行一次吗。

解决方案 »

  1.   

    运行就看出了。
    class A{
    static {
    System.out.println("dkddddk");
    }
    static void prt(){
    }
    }
    class B{
    public void prt(){
    A.prt();
    }
    }
    class C{
    public void prt(){
    A.prt();
    }
    }
    public class Test{ public static void main(String[] args){
    new B().prt();
    new C().prt();
    }
    }
      

  2.   

    static静态属性,类创建的时候首先创建的就是这些变量方法,之后不会创建了
      

  3.   

    static 修饰的时候,在类的第一初始化时 进行初始化,而且只初始化一次 在构造函数之前
      

  4.   

    static块 里面不允许有:break,continue,return,try-catch-finally,throw语句.
      

  5.   

    class A
    {
         static {  System.out.println("staticA");}
         A()
         {
                System.out.println("A");
          }
    }
    class B
    {
       public static void main(String []args)
    {
           new A();
           new A();
    }
    }static 块只执行一次...........