运行一个java程序,启动一个JVM进程,那一个java项目中有很多的类的调用,当类调用的时候进程中是怎样的变化?

解决方案 »

  1.   

    JVM进程启动的时候肯定要指定一个入口类,一般都是你执行main()方法的那个类。
    JVM会把所有相关的类通过Classloader加载进来,然后你入口程序调用哪个它就触发哪个。直到main()执行结束,JVM的后台进程会继续做收尾处理,等后台进程结束后整个程序就停止了。
      

  2.   


    class  MyTest{
    static {
    System.out.println("这是一个静态的代码块");

    }
    static final  String  name ="java权威指南";
    static  int page;
    }
    public class TestCompileConstant {
         public static void main(String[] args) {
    System.out.println(MyTest.name);
    System.out.println(MyTest.page);
    }
    }结果是: 
        java权威指南
        这是一个静态的代码块
        0
       
    为什么是这个结果?
      

  3.   


    这个跟final有关,我个人的理解final static 和 static 在执行的时候是不相同的。
    tatic变量执行前会检查类的static,如果有则执行
    final static常量则不会检查,执行执行你可以尝试着将“java权威指南”的final去掉看看结果,然后再将两个变量都设置成final再执行。