最近看了下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方法中添加相关的逻辑。在一个对象的内存空间被垃圾回收器回收之前

java对象生命周期概述复习的更多相关文章

  1. Java对象生命周期

    [TOC] 1. 创建阶段(Created) 为对象分配存储空间 开始构造对象 从父类到子类对static成员进行初始化 父类成员变量按照顺序初始化,递归调用父类的构造方法 子类成员变量按照顺序初始化 ...

  2. java类生命周期详细解析

    (一)详解java类的生命周期 引言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前 ...

  3. ASP.NET 页生命周期概述

    ASP.NET 页生命周期概述 Visual Studio 2005    ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维 ...

  4. ASP.NET 应用程序生命周期概述[转自MSDN]

    本文转自:http://msdn.microsoft.com/zh-cn/library/ms178473(VS.80).aspx 下表描述了 ASP.NET 应用程序生命周期的各个阶段.   阶段 ...

  5. [转]ASP.NET 页生命周期概述

    原文链接:http://msdn.microsoft.com/zh-cn/library/ms178472(v=vs.110).aspx  对应版本:.NET 4.0 ASP.NET 页运行时,此页将 ...

  6. IIS 7.0 的 ASP.NET 应用程序生命周期概述(转载)

    IIS 7.0 的 ASP.NET 应用程序生命周期概述更新:2007 年 11 月本主题介绍在 IIS 7.0 集成模式下运行以及与 IIS 7.0 或更高版本一起运行的 ASP.NET 应用程序的 ...

  7. ASP.NET 2.0 页(Page)生命周期概述

    原文:ASP.NET 2.0 页(Page)生命周期概述 引用MSDNASP.NET 页生命周期概述 ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初 ...

  8. ASP.NET 应用程序(Application)生命周期概述

    原文:ASP.NET 应用程序(Application)生命周期概述 引用MSDN:ASP.NET 应用程序生命周期概述 本 主题概述应用程序生命周期,列出重要的生命周期事件,并描述如何编写适合应用程 ...

  9. 知识记录:ASP.NET 应用程序生命周期概述及Global.asax文件中的事件

    IIS7 ASP.NET 应用程序生命周期概述 https://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx HttpApplica ...

随机推荐

  1. 循环杀死Mysql sleep进程脚本

    #!/bin/sh while : do n=`mysqladmin processlist -uadmin -p***|grep -i sleep |wc -l` date=`date +%Y%m% ...

  2. JAVA中BufferedReader设置编码的必要性

    实验环境 Myeclipse 默认编码 UTF-8 先看两种读文件的方式: 方式一: InputStreamReader fReader = new InputStreamReader(new Fil ...

  3. eclipse 查看源代码

    文地址:http://blog.csdn.net/sushengmiyan/article/details/18798473 本文作者:sushengmiyan 我们在使用Eclipse的时候,经常是 ...

  4. sourcenav安装

    $ ./configure之后会出现 configure: error: ./configure failed for unixconfigure: error: ./configure failed ...

  5. 【BZOJ2199】[Usaco2011 Jan]奶牛议会 2-SAT

    [BZOJ2199][Usaco2011 Jan]奶牛议会 Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要 ...

  6. coursera 《现代操作系统》 -- 第九周 文件系统(1)

    文件的定义 文件名-> 路径名 磁盘结构 磁臂转还是那根柱子转? 盘片被轴带动旋转,磁头读取经过的扇区的数据. 典型的磁盘结构 一块盘呢由若干个盘片组成 每个盘片呢实际上有两个面啊,两个盘面 每 ...

  7. RedHat6/Centos6.5安装mongodb

    1 设置mongodb目录 [root@localhost /]# cd home/ [root@localhost home]# mkdir mongodb/db 2 配置yum [root@loc ...

  8. <2013 07 06> "极路由" 与 “家庭服务器” 报道两则

    跟我做!打造家庭服务器 很久没有更新了,因为之前托朋友帮我弄的mini PC终于到手了.阴差阳错地,原来只打算弄一台将就可用的低功耗下载机,结果到手的却是一台支持1080p(宣称,还没烧过),还带遥控 ...

  9. 使用selenium进行密码破解(绕过账号密码JS加密)

    经常碰到网站,账号密码通过js加密后进行提交.通过burp拦截抓到的账号密码是加密后的,所以无法通过burp instruder进行破解.只能模拟浏览器填写表单并点击登录按钮进行破解.于是想到了自动化 ...

  10. HTML 之 Table 表格详解

    HTML 之 Table 表格详解 HTML中的table可以大致分为三个部分: thead ---------表格的页眉 tbody ---------表格的主体 tfoot ---------定义 ...