本帖最后由 wsdhla 于 2010-09-22 21:04:59 编辑

解决方案 »

  1.   

    假设现在你有一人com.csdn.util.Person的类; 
    那么Class.faoName("com.csdn.util.Person");这样会将Person加载到内存,也就是说内存中
    会有一上与Persno关联的Class对象.这时候此类中的静态代码块会被执行。但并未产生Person的实例.而new Person();
    则上而的工作会得作一遍,并且还会产生一个Person类的实例。也就是说一个是加载,一个是实例化,这就是二者的区别.
      

  2.   

    假设有一个A类  那  A a = new A()  与   new A(),这两者又有什么区别?
      

  3.   

    A a = new A()相当于产生了一个对象,由一个名字叫a的引用指向这个对象,可以通过引用a来操作这个对象
    new A()相当于产生了一个对象,这个对象没有引用指向它,也不知道叫什么名字
      

  4.   

    Class.forName 表示加载一个类
    new A 表示除了加载一个类之外,还产生这个类的实例加载一个类会初始化类信息,以及带有 static 的东西,比如静态成员、静态方法、静态内部类,以及静态块
    new A() 与下面这两句的作用是一样的:A a = (A)Class.forName("xxx.xxx.A").newInstance();