我通过写代码得出了一个结论:main()所在那个类在运行时直接被加载,而源文件中其他类在new对象时才会加载我想问下大家这个结论对不对

解决方案 »

  1.   

    源文件中其他类在new对象时才会加载,楼主的这句话有些问题对象的产生不一定要用new,,比如说:String a="abc";Integer b=25;
    Class.forName("com.mysql.jdbc.Driver");Calendar cd=Calendar.getInstance();
    因此你的说法有些片面.
      

  2.   

     
    JayYounger,你说的有道理,理论上a和b都是对象,但是我只能想到在被加载的类里添加的静态块中打印语句来验证该类是否被加载,String和Integer都不能这样,求教验证代码
      

  3.   

    楼主的问题 其实就是一个类被主动加载的问题,共有六种情况
    1,当new 一个对象的时候,会主动加载该类
    2,当运用反射时 例如 class.forName(".......")
    3,调用该类得静态方法,代码块时
    4,调用该类的静态方法时
    5,初始化子类,那么他的父类也会被加载
    6,这个类为用户定义的启动类,也就是有main方法的类。
    楼主你说的情况就是符合了1和6。
      

  4.   

    对于有main方法的类来说,只要main运行就会触发,对于其它,不仅仅是new时,应该是任何与该类相关的元素被使用到时,都会触发该类的初始化