zoukankan      html  css  js  c++  java
  • 对象初始化

    (类初始化和对象初始化的区别?)
    Person p = new Person("zhangsan",20);

    这句话都做了什么事情?
    0,栈内存分配main中的p空间。
    1,因为new用到了Person.class文件,所以会先找到Person.class文件加载到内存中。
    2,执行该类中的static代码块,给Person.class类进行初始化。
    3,在堆内存中开辟空间,分配内存地址。
    4,在堆内存中建立对象的特有属性,并进行默认初始化。
    5,对属性进行显示初始化。
    6,对对象进行构造代码块初始化。
    7,对对象进行对应的构造函数初始化。
    8,将内存地址赋给栈内存中的p变量。
    初始化顺序:类初始化>>属性默认初始化>>属性显示初始化 >>构造代码块初始化 >>构造函数初始化。


    当创建一个类时,如 Student stu = new Student();
    jvm到底做了些什么?
    1.栈内存分配main中的stu空间。
    2.因为new用到了Studetn.class文件,所以会先找到Student.class文件加载到内存中。
    3.执行父类静态代码块。(类初始化)
    4.执行子类静态代码块。(类初始化)
    5.在堆内存中建立对象的特有属性,并进行默认初始化。


    6.父类显示初始化。**
    7.执行父类构造代码块。
    8.执行父类构造函数。


    9.子类显示初始化。**
    10.执行子类构造代码块。
    11.执行子类构造函数。

  • 相关阅读:
    兼容ie6的ul水平居中对齐
    button小手设置 css的cursor
    virtualbox xp连不上网
    转发与重定向的区别(forward与redirect的区别)
    注册表单输入框检测
    html中块元素的居中。及兼容性
    centos下不重装php——给PHP添加新扩展库
    linux编译安装时常见错误解决办法
    Swift可选链
    jQueryMobile(一)
  • 原文地址:https://www.cnblogs.com/lsx1993/p/4648633.html
Copyright © 2011-2022 走看看