zoukankan      html  css  js  c++  java
  • java对象生命周期概述复习

     最近看了下java对象的生命周期做个笔记复习复习,很多不同的原因会使一个java类被初始化,可能造成类初始化的操作:

    1)  创建一个java类的实例对象。

    2)  调用一个java类中的静态方法。

    3)  为类或借口中的静态域赋值。

    4)  访问类或接口中声明的静态域。

    5)  在一个顶层java类中执行assert语句也会使该java类被初始化。

    6)  调用Class类和反射API中进行反射操作的方法也会初始化java类。

    对象的创建与初始化:

    对象的创建分为显示和隐式创建

    显示创建:

    1)、用new创建对象

    2)、使用反射手段,即调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

    3)、调用对象的clone()方法,这种方法不会调用类的构造函数。

    4)、使用反序列化的方法。

    隐式创建:

    1)、String str=“str”;这种属于String类型直接数对应一个String对象,引用一个String对象。若此时运行String str2=“str”;则str和str2是同一个对象。

    2)、String中的+的使用。

    3)、JVM加载一个类的时候,会隐含创建描述这个类的Class实例。

    在java中通过new创建一个类的对象。除了Object类之外,所有的java类都有父类。在没有extends声明父类时,默认的父类就是Object类,在创建对象时,父类和祖先类的初始化逻辑会被依次执行。实际的初始化流程是先沿着继承层次结构树往上传递,完成部分初始化工作。到达Object类之后,再沿着层次结构树向下,完成其余的初始化工作,最后回到初始化的java类。任何步骤出错就无法初始化。

    对象的终止:

    对象创建完成后,使用一段时间就可能不再需要了。如果没有引用指向一个对象,说明该对象可以被销毁。在创建和使用对象的过程中,可能申请了相关的资源,在对象销毁前,这些资源要被正确地释放,这些资源分为内存资源和非内存资源,内存资源是垃圾回收器管理,帮我们释放,但是非内存资源需要我们在代码中自己操作释放(如:数据库连接资源、文件打开等)。

    Java中引用了对象终止机制(finalization):

    如果一个java类的对象有自定义的销毁逻辑,那么可以覆写Object类的finalize方法,在finalize方法中添加相关的逻辑。在一个对象的内存空间被垃圾回收器回收之前

  • 相关阅读:
    【转】C#中判断扫描枪输入与键盘输入
    根据名称分组,选择最大日期和最小日期的数据,并显示在一行上
    C#如何判断我的程序已经有一个实例正在运行
    消息队列篇
    Redis面试笔记(二)雪崩、穿透、击穿三连问
    MySQL基础
    Redis面试笔记(一)
    Java多线程(二)
    Java多线程(一)
    Elastic Search之布尔查询
  • 原文地址:https://www.cnblogs.com/sunwubin/p/3365343.html
Copyright © 2011-2022 走看看