Java学习笔记(一)

    技术2022-05-11  158

     构造函数确保初始化

        当实例化一个对象时,所要进行了的工作,如:

      a.当调用到Dog类的成员或方法时,解释器通过class路径搜寻Dog.class类文件  b.加载这个类文件,初始化static成员,静态初始化只在Class类对象首次加载的时候执行一次  c.当用new Dog()创建对象的时候,将在堆上为Dog对象分配足够的内存  d.Dog对象中的所有基本类型数据都设置成了缺省值  e.执行所有字段初始化动作  f.执行构造器.

    初始化顺序:      先初始化"静态"对象,再初始化“非静态”对象,当静态对象所在的类没有加载时,这个静态对象不会被初始化,但是被加载后,静态对象只被初始化一次。当一个类被加载时,所定义的实例对象无论散布于任何方法之间,它仍旧在任何方法(包括构造方法)调用之前都会被初始化。例如:

    public class Test {

     /**  * @param args  */ public static void main(String[] args) {  // TODO Auto-generated method stub      B b = new B();       }

    }class A{ A(int mark) {  System.out.println("A("+mark+")"); }}class B{ B() {  System.out.println("B"); } A a1 = new A(1);  A a2 = new A(2); }

    输出结果为:A(1)A(2)B即使B()构造在a1实例对象之前,结果也是同样,因为在Test中new B()时,在B这个类中首先初始化A所有的实例对象,再调用B的构造方法。

     

     

     

     

     


    最新回复(0)