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方法中添加相关的逻辑。在一个对象的内存空间被垃圾回收器回收之前
java对象生命周期概述复习的更多相关文章
- Java对象生命周期
[TOC] 1. 创建阶段(Created) 为对象分配存储空间 开始构造对象 从父类到子类对static成员进行初始化 父类成员变量按照顺序初始化,递归调用父类的构造方法 子类成员变量按照顺序初始化 ...
- java类生命周期详细解析
(一)详解java类的生命周期 引言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前 ...
- ASP.NET 页生命周期概述
ASP.NET 页生命周期概述 Visual Studio 2005 ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维 ...
- ASP.NET 应用程序生命周期概述[转自MSDN]
本文转自:http://msdn.microsoft.com/zh-cn/library/ms178473(VS.80).aspx 下表描述了 ASP.NET 应用程序生命周期的各个阶段. 阶段 ...
- [转]ASP.NET 页生命周期概述
原文链接:http://msdn.microsoft.com/zh-cn/library/ms178472(v=vs.110).aspx 对应版本:.NET 4.0 ASP.NET 页运行时,此页将 ...
- IIS 7.0 的 ASP.NET 应用程序生命周期概述(转载)
IIS 7.0 的 ASP.NET 应用程序生命周期概述更新:2007 年 11 月本主题介绍在 IIS 7.0 集成模式下运行以及与 IIS 7.0 或更高版本一起运行的 ASP.NET 应用程序的 ...
- ASP.NET 2.0 页(Page)生命周期概述
原文:ASP.NET 2.0 页(Page)生命周期概述 引用MSDNASP.NET 页生命周期概述 ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初 ...
- ASP.NET 应用程序(Application)生命周期概述
原文:ASP.NET 应用程序(Application)生命周期概述 引用MSDN:ASP.NET 应用程序生命周期概述 本 主题概述应用程序生命周期,列出重要的生命周期事件,并描述如何编写适合应用程 ...
- 知识记录:ASP.NET 应用程序生命周期概述及Global.asax文件中的事件
IIS7 ASP.NET 应用程序生命周期概述 https://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx HttpApplica ...
随机推荐
- python语言 buffer类型数据的使用 'ascii' codec can't decode byte 0xe5 问题的解决
在python中我们使用buffer类型时可以将其转换为str类型. 如果obejct的类型为<type 'buffer'> ,可以使用str(object)将其转换为字符串类型. 在转换 ...
- linux虚拟文件系统vfs
linux可以挂载不同的文件系统(EXT2,FAT,NTFS),用同一的样式呈现给用户,读写操作用起来都一样,这是怎样做到的呢? linux内核在各种不同的文件系统格式上做了一个抽象层,使得文件.目录 ...
- 超级拷贝scp
scp -r 超级拷贝,其是ssh的一个组件,通过ssh访问来拷贝文件.首先保证已安装openssh-server. 用法:scp -r 目标用户名@目标ip:目标文件绝对路径 存放位置 $ scp ...
- HashMap与HashTable原理及数据结构
HashMap与HashTable原理及数据结构 hash表结构个人理解 hash表结构,以计算出的hashcode或者在hashcode基础上加工一个hash值,再通过一个散列算法 获取到对应的数组 ...
- 对象中prototype与__proto__与从cinstructor的作用和区别
首先先要知道prototype什么时间才会有 只有在创建函数的时候,每当函数创建的时候才会原型prototype,还有一个constructor,这个不是函数独有的,对象也有 下面就来说说对象prot ...
- Ext扩展的QQ表情选择面板
Ext扩展的QQ表情选择面板 define(function () { EmoteChooser = function(cfg){ this.width=340; this.height=112; t ...
- 【转载】java连接MYSQL
原文出自 http://qq163230530.blog.163.com/blog/static/4289250620081186262719/ 这篇文章主要以MySQL为例讲下Java如何连接到数据 ...
- Node Embedding
1.Kipf, Thomas N., and Max Welling. "Semi-supervised classification with graph convolutional ne ...
- 第一百八十八节,jQuery,选项卡 UI
jQueryUI,选项卡 UI 学习要点: 1.使用 tabs 2.修改 tabs 样式 3.tabs()方法的属性 4.tabs()方法的事件 5.tabs 中使用 on 选项卡(tab),是一种能 ...
- ie10 css hack 条件注释等兼容方式整理
点评:ie10已经上线一段时间了,相信已经有一部分前端潮人体验过了,截至到现在,在ie6到ie9的浏览器各种各样的古怪行为,开发人员不得不使用条件注释,有条件的类,和其他特定于IE的css hack来 ...