1.java中通过对象名来调用静态函数时,静态函数进栈时,会不会有this?
2.java中内存加载类文件时,是将整个文加载完之后,再进行静态成员变量初始化,还是加载完静态成员变量后立即初始化静态成员变量?

解决方案 »

  1.   

    1.静态函数是在类加载的时候加载的,可以直接用类名去调用,所以不会存在对象,也就不会有this
    2.类文件的加载,是先加载类,然后初始化变量的
    可见代码如:public class Test{
    public Test() {
    System.out.println("3");
    }
    public static int i=2;
    static{
    System.out.println("1");
    }
    public static void main(String[] args) {
    System.out.print(Test.i);
    }
    }
      

  2.   

    楼上正解,Java的字节码文件是按照一定的规范和结构来组织的,加载器把文件加载到内存,并验证文件结构是否正确,如果正确就根据规则放到方法区。然后再进行初始化过程。