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

    一、对象的创建过程

      1.首次创建对象时或该类静态方法/静态域首次被访问时,JAVA解释器查找该类的路径,定位该类的class文件

      2.载入该类的class文件,有关静态初始化的所有动作执行,但是只执行一次。

      3.当用new方法创建对象时,在堆上为对象分配足够的存储空间

      4.清零分类的存储空间使该类的基本类型设置成为默认值,引用为null

      5.执行所有出现于字段定义出的初始化动作

      6.执行构造器

    注意

      初始化顺序是先静态对象后非静态对象,然后构造器初始化。

      静态对象初始化只进行一次,(1)在首次生成相应类的对象时  (2)首次访问类中的静态数据成员时。

      构造器实际是静态方法。

      构造器的任务:检查对象是否被正确地构造。

    二、构造器创建对象执行过程

      1.为对象分配空间

      2.实例变量默认初始化

      3.执行构造器进行初始化

      4.通过this给实例变量赋值

      5.构造器返回对象给引用变量

    注意

      构造器是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但是这个对象并不是完全由构造器负责创建的

      实际上,当调用构造器时,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象已经产生了,这些操作在构造器执行之前都完成了。

      也就是说,当系统开始执行构造器的构造体之前,系统已经创建一个对象,只是这个对象还不能被外部程序访问,只能在该构造器中通过this来引用

      当构造器的执行体执行结束后,这个对象作为构造器的返回值被返回,通常还会赋给另一个引用变量,从而让程序外部可以访问该对象。

      复杂对象调用构造器地顺序:调用基类构造器->自身成员初始化->调用自身构造器

  • 相关阅读:
    display的几种常用取值
    css五种定位方式介绍
    单行文字超过某个宽度时,显示省略号
    点击鼠标右键弹出错误提示:CrashHandler initialization error
    基于jquery 的find()函数和children()函数的区别
    跨域问题,前端主动向后台发送cookie
    Boolean()值为false的五个特殊值
    如何把select默认的小三角替换成自己的图片
    如何将网页的title前面的图标替换成自己的图标
    C#阿里云 移动推送 接入
  • 原文地址:https://www.cnblogs.com/zzhangyuhang/p/8467688.html
Copyright © 2011-2022 走看看