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 面向对象编程-- 第十三章 反射、类加载与垃圾回收的更多相关文章

  1. java面向对象编程— —第七章 继承

    7.1继承的起源 继承(Inheritance),即在面向对象编程中,可以通过扩展(extends)一个已有的类,并继承该类的属性的行为,来创建一个新的类. 已有的类称为父类(也可以称为基类,超类), ...

  2. java面向对象编程——第四章 类和对象

    OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启 ...

  3. java面向对象编程——第五章 对象的行为

    5.1 方法调用栈 当一个方法被调用时,将导致控制流程跳转到被调用的方法.然后,控制流程执行方法中的语句.当然,被执行的方法可能会调用其它方法,导致控制流程跳转到其它方法.所有的方法调用都维护在一个称 ...

  4. java 面向对象编程-- 第15章 集合框架

    1.  集合特点:元素类型不同.集合长度可变.空间不固定 2.  java中对一些数据结构和算法进行了封装即集合.集合也是一种对象,用于存储.检索.操作和传输对象. 3.  JCF(Java Coll ...

  5. java面向对象编程——第六章 数组

    1.数组概述 数组是存储在一个连续的内存块中的元素集合.数组中的每个元素必须是相同的数据类型,并且通过索引进行区分.数组中的第一个元素的索引为0. 在java中,创建数组有两个步骤: 声明一个对数组的 ...

  6. java面向对象编程—— 第三章 程序流程控制

    3.1流程控制 三种基本技术可以改变程序的控制流程: ①   调用方法:调用方法将导致控制流程离开当前方法,转移到被调用的方法: ②   选择:java中有两种做出选择的机制:if/else语句和sw ...

  7. java 面向对象编程 第20章 XML技术解析

    1.  XML:extended Markup Language  可扩展标记语言,利用标签和子标签方式描述数据. 2.  声明<?xml version=”1.0”?>版本号 注释< ...

  8. java 面向对象编程 第18章——网络编程

    1.  TCP/IP协议模型 应用层:应用程序: 传输层:将数据套接端口,提供端到端的通信服务: 网络互联层:负责数据包装.寻址和路由,同时还包含网间控制报文协议: 网络接口层:提供TCP/IP协议的 ...

  9. java 面向对象编程--第17章 I/O系统

    1.I/O操作指的是输入和输出流的操作.相对内存而言,当我们从数据源中将数据读取到内存中,就是输入流,也叫读取流.当我们将内存中处理好的数据写入数据源,就是输出流,也叫写入流. 2.流按照内容分类:字 ...

随机推荐

  1. iOS - OC iOS 开发体系

    1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation ...

  2. 关于JAVA中URL传递中文参数,取值是乱码的解决办法

    前几天看到有网友在问URLDecoder和URLEncoder方面的使用问题,突然想起,原来我刚遇到这两个类时,也觉得很神密,由此可以想想初学者的心情,于是便有了今天的这篇文章. 其实,这两个类的使用 ...

  3. facebook 开源文件传输 lib

    https://github.com/facebook/wdt WDT is an embeddedable library (and command line tool) aiming to tra ...

  4. Android图形显示之硬件抽象层Gralloc(hal 转)

    原文  http://blog.csdn.net/yangwen123/article/details/12192401 FrameBuffer驱动程序分析 文中介绍了Linux系统下的显示驱动框架, ...

  5. 用CSS样式截取字符串,多的用省略号表示

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...

  6. iOS开发之 在release版本禁止输出NSLog内容

    因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉. 我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时 ...

  7. iOS 开发之照片框架详解(3)

    http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 三. 常用方法的封装 虽然 Phot ...

  8. iOS——为Xcode编译POCO C++静态库

    一.POCO C++ library简介 POCO C++ library是一个C++编写的跨平台库,主要实现网络连接.数据库管理以及服务器,适用于跨平台.嵌入式. 二.为Xcode编译POCO C+ ...

  9. Js_动画显示背景图片

    jAni是一个可以动画显示背景图片的jQuery插件.这个插件基本上是GIF动画的一个替代品,但是他有他的好处.所有浏览器都支持GIF形式的动画格式,而且也不需要额外的javaScript代码和标记. ...

  10. Hexo+github 搭建个人博客(一)

    一.软件环境准备 1.安装git windows下载exe安装:linux 执行 apt-get install git-core 安装 2.安装Node.js windows使用 msi 文件进行安 ...