java 面向对象编程-- 第十三章 反射、类加载与垃圾回收
1、狭义JavaBean规范
- Javabean必须包含一个无参数的public构造方法,方便通过反射的方式产生对象。
- 属性必须都是私有的。
- Javabean必须包含符合命名规范的get和set方法,以便访问Javabean的属性。
- Javabean应该是可序列化(serializable)的。
2、反射
在编译时,并不清楚应该加载哪个类。类的加载是在运行期间进行的。通过反射,可以对类进行加载、探知、自审。
可以通过对象.getClass()或者通过类名.class或者通过Class.forName(“包名.类名”)得到类模板。
Field、、getDeclaredFields、、getName可以获得当前类的属性名。
Method、、getMethods、、getName可以获得当前类的方法名。
Object x=n.newInstance(); 调用类的无参构造方法,产生该类的对象。
3、Java类文件通过类加载器加载到内存中。类加载器包括根类加载器、扩展类加载器、系统类加载器。此外,Java API中还提供了一个ClassLoader抽象类,开发者还可以通过继承ClassLoader基类来创建自定义的类加载器。
4、根类加载器是用本地代码实现的,它负责加载核心Java类;扩展类加载器负责加载扩展的Java类,包括所有javax.*开头的类和存放在JRE的扩展目录下中(JAVA_HOME/jre/lib/ext)JAR的类包;系统类加载器负责加载应用程序自身的类。根类加载器同时负责加载扩展类加载器和系统类加载器。
5、类加载的过程包括加载、连接(验证、准备、解析)、初始化三个阶段。
6、类加载完成后,会得到一个对应的Class对象。
7、通过将引用赋值为null,或者将引用赋值为其它对象,或使用脱离范围,可以让对象成为不可获得。当一个对象成为不可获得时,就可能被垃圾回收器回收。
8、System.gc()或者Runtime.gc()方法是程序员于JVM的垃圾回收器进行通讯的唯一的机制,但是执行gc()方法,并不能保证垃圾回收器立即执行垃圾回收,只能促使垃圾回收器尽快回收无用的对象。
9、对象的finalize()方法可以帮助我们完成一些释放对象锁占用的资源等收尾工作。但是垃圾回收器是否会执行finalize()方法、以及何时执行该方法,都是不确定的。
java 面向对象编程-- 第十三章 反射、类加载与垃圾回收的更多相关文章
- java面向对象编程— —第七章 继承
7.1继承的起源 继承(Inheritance),即在面向对象编程中,可以通过扩展(extends)一个已有的类,并继承该类的属性的行为,来创建一个新的类. 已有的类称为父类(也可以称为基类,超类), ...
- java面向对象编程——第四章 类和对象
OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启 ...
- java面向对象编程——第五章 对象的行为
5.1 方法调用栈 当一个方法被调用时,将导致控制流程跳转到被调用的方法.然后,控制流程执行方法中的语句.当然,被执行的方法可能会调用其它方法,导致控制流程跳转到其它方法.所有的方法调用都维护在一个称 ...
- java 面向对象编程-- 第15章 集合框架
1. 集合特点:元素类型不同.集合长度可变.空间不固定 2. java中对一些数据结构和算法进行了封装即集合.集合也是一种对象,用于存储.检索.操作和传输对象. 3. JCF(Java Coll ...
- java面向对象编程——第六章 数组
1.数组概述 数组是存储在一个连续的内存块中的元素集合.数组中的每个元素必须是相同的数据类型,并且通过索引进行区分.数组中的第一个元素的索引为0. 在java中,创建数组有两个步骤: 声明一个对数组的 ...
- java面向对象编程—— 第三章 程序流程控制
3.1流程控制 三种基本技术可以改变程序的控制流程: ① 调用方法:调用方法将导致控制流程离开当前方法,转移到被调用的方法: ② 选择:java中有两种做出选择的机制:if/else语句和sw ...
- java 面向对象编程 第20章 XML技术解析
1. XML:extended Markup Language 可扩展标记语言,利用标签和子标签方式描述数据. 2. 声明<?xml version=”1.0”?>版本号 注释< ...
- java 面向对象编程 第18章——网络编程
1. TCP/IP协议模型 应用层:应用程序: 传输层:将数据套接端口,提供端到端的通信服务: 网络互联层:负责数据包装.寻址和路由,同时还包含网间控制报文协议: 网络接口层:提供TCP/IP协议的 ...
- java 面向对象编程--第17章 I/O系统
1.I/O操作指的是输入和输出流的操作.相对内存而言,当我们从数据源中将数据读取到内存中,就是输入流,也叫读取流.当我们将内存中处理好的数据写入数据源,就是输出流,也叫写入流. 2.流按照内容分类:字 ...
随机推荐
- 01 Developing Successful Oracle Applications
varchar2 类型定义时, 个人认为应该选择byte 类型, 即 varchar2(20), oracle 支持的最大的字符串是 varchar2(4000), 同时, 个人认为, 当你定义一个v ...
- C++——类和动态内存分配
一.动态内存和类 1.静态类成员 (1)静态类成员的特点 无论创建多少对象,程序都只创建一个静态类变量副本.也就是说,类的所有对象都共享同一个静态成员. (2)初始化静态成员变量 1)不能在类声明中初 ...
- spring-boot资料
spring-boot-admin的相关资料 This application provides a simple UI to administrate Spring Boot application ...
- [转载]WEB缓存技术概述
[原文地址]http://www.hbjjrb.com/Jishu/ASP/201110/319372.html 引言 WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户 ...
- hdu_2089 不要62
数位动态规划 数位动态规划是求解一个大区间[L, R]中间满足条件Q的所有数字的个数(或者和,或其他)的一种方法.它通过分析每一位上的数字,一般用 dp[len][digit][...] 来表 ...
- JavaScript设计模式与开发实践 - 单例模式
引言 本文摘自<JavaScript设计模式与开发实践> 在传统开发工程师眼里,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返 ...
- phalcon: 获取参数的方法
phalcon: 获取参数的方法 一般情况下:GET/POST $this->request->get(参数); $this->request->getPost("参 ...
- [ 转]Android快速开发–使用ORMLite操作数据库
OrmLite是一个数据库操作辅助的开源框架,主要面向Java语言.在Android面向数据库开发中,是一个比较流行的开源框架,方便操作而且功能强大,今天来学习一下,最近的项目中也有所涉及,写个博客来 ...
- EXEL表格读取 按键精灵
EXEL表格读取(1,m)(2,m)表格信息,m为行数 以下为本帖隐藏内容 ============================== Call Plugin.Office.OpenXls(&quo ...
- SQL Server 2012清除连接过的服务器名称历史
退出客户端后 SQL Server 2012: 删除这两个地方!请提前备份! X:\Users\XXX\AppData\Roaming\Microsoft\SQL Server Management ...