日期:2014-05-20  浏览次数:20708 次

Java面试问题之十五
在Java中显示创建对象的方式有多少种?

答:在Java中有四种显式创建对象的方式:
      (1)最简单和直接的方式当然就是使用new语句创建对象。
      (2)使用反射手段创建对象,调用java.lang.Class或者java.lang.reflect.Constructor的
               newInstance()实例方法。
      (3)调用对象的clone()方法。
      (4)运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。

        但是不管采用何种方式来创建对象,Java虚拟机创建一个对象都包含以下步骤:
        首先,给对象分配内存。
        其次,将对象的实例变量自动初始化为其变量类型的默认值。
        最后,初始化对象,给实例变量赋予正确的初始值。

        对于以上的步骤中的最后一步初始化工作则有3种不同的方式来初始化对象,到底采用哪一
        种初始化方式取决于创建对象的方式。
        * 如果对象是通过克隆方法创建的,那么Java虚拟机把原来被克隆对象的实例变量的值拷
            贝到新的对象种。
        * 如果对象是通过ObjectInputStream类的readObject()创建的,那么Java虚拟机通过从
            输入流种读入的序列化数据来初始化那些非暂时性(non-transient)的实例变量。
        * 在其他情况下,如果实例变量在声明时被显示初始化了,那么就把初始化值赋予实例变
            量,接着在执行构造方法。