zoukankan      html  css  js  c++  java
  • java 对象的创建过程

    初始化的顺序首先是static(如果它们尚未由前一次对象创建初始化,也就是new对象的时候,只执行一次static变量初始化),变量初始化顺序有变量在类的定义顺序决定的;

    对象的创建过程,以Dog类为例:

    1.类型为Dog首stati次创建的时候,或者Dog类的stajitic方法/static字段首次访问时,java编译器必须找到Dog.class;

    2.找到Dog.class后(它会创建一个Class对象),它的所有static初始化模块都会运行。因此,static初始化仅发生一次-----在Class对象首次载入的时候

    3.创建一个new Dog()时,Dog对象的构建进程首先会在内存堆(heap)里为一个Dog对象分配足够多的内存空间;

    4.这种空间为情况为0,将Dog中的所有基本类型设为它们的默认值;

    5.进行字段定义时发生的所有初始化都会执行;

    6.执行构造器

    package thinking;
    //: Beetle.java
    // The full process of initialization.
    class Insect {
      int i = 9;
      int j;
      Insect() {
        prt("i = " + i + ", j = " + j);
        j = 39;
    }
       static int x1 = prt("static Insect.x1 initialized");
       static int prt(String s) {
          System.out.println(s);
         return 47;
       }
    }

    继承类

    package thinking;
    public class Beetle extends Insect {
        int k = prt("Beetle.k initialized");
        Beetle() {
          prt("k = " + k);
          prt("j = " + j);
    }
    static int x2 = prt("static Beetle.x2 initialized");
    static int prt(String s) {
        System.out.println(s);
        return 63;
    }
    public static void main(String[] args) {
        prt("Beetle constructor");
        Beetle b = new Beetle();
    }
    }

    执行结果:

    static Insect.x1 initialized
    static Beetle.x2 initialized
    Beetle constructor
    i = 9, j = 0
    Beetle.k initialized
    k = 63
    j = 39

  • 相关阅读:
    js 那些事二 javascript中的闭包理解
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java入门
    Java入门
    Java入门
  • 原文地址:https://www.cnblogs.com/newlangwen/p/9157536.html
Copyright © 2011-2022 走看看