当A被引用的时候,调用f();学习一下static {}

解决方案 »

  1.   

    static {
           f();  //这里调用的方法必须是static类型的,否则要通过创建实例调用非静态方法
        }
    这段表示静态初始化块,引用的成员变量只能是静态成员变量,这段代码的类加载的时候会执行(只执行一次,下次类加载的时候不会执行)
      

  2.   

    A类第一次加载的时候静态方法就创建了入口地址,也就是static void f() {.....}已经可以被调用了,所以在执行static {}代码块的时候已经可以调用f() 方法,之所以在static{}块中不能直接调用实例方法是因为,实例方法要在对象第一次被创建的时候才开辟方法入口地址,所以在static中调用非static方法只能通过实例调用,要不然编译不能通过