Java实现类的重载及使用垃圾回收钩子函数
时间:2020-03-27
本文章向大家介绍Java实现类的重载及使用垃圾回收钩子函数,主要包括Java实现类的重载及使用垃圾回收钩子函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package com.company;
public class Main {
public static void main(String[] args) {
}
}
//声明一个书类
class Book {
// 书的名称
String bookName;
// 书的价格
double bookPrice;
// 注解: 同一个类利用方法重载机制可以拥有声明多个构造方法,采用不同的参数列表实现,术语叫: 方法重载
// 构造方法1
public Book(String bookName) {
// 这种调用方式,可以降低沉余代码量,在参数少的构造函数调用参数多的构造函数,实现构造函数体的重用
// this 为调用当前实例对象的构造方法,传不同数量的参数,会触发不同的重载构造函数,在这里触发的是构造方法2
this(bookName, 520);
}
// 构造方法2
public Book(String bookName, double bookPrice) {
this.bookName = bookName;
this.bookPrice = bookPrice;
}
// 下面的finalize是一个当实例对象被Java运行时系统进行准备自动垃圾回收前,会对其自动调用的一个finalize方法, 类似 钩子函数机制
// 触发条件:无用对象
// 1.离开作用域的对象
// 2.没有被引用指向的对象,比如: new Book('hello the program'); 没有被引用
// 在Java运行时系统当中存在一个垃圾收集器他会自动扫描对象的动态内存区域,对没有被使用的对象会进行标脏(标记),
// ,然后会在下一次的垃圾回收时将这个对象进行销毁,在销毁前就会调用finalize方法,他是每个类都默认存在的一个方法,继承自Object对象,你可以重写也称覆盖(Override)这个方法体来进行一些操作,但要注意以下几点:
// 补充:垃圾收集器是一个后台线程运行的,在系统空闲时会被异步执行。
// finalize特点:
// 1.用于释放资源
// 2.什么时候会被调用是不知道的,所以是无次序的,可能在任何时机以任何次序被执行
// 注意: 在进行释放资源的操作时,不能有严格次序关系,所以写的时候,不管什么时候这个finalize方法会被执行都不能写响应程序正确性的代码。
@Override
protected void finalize() {
if (this.bookPrice == 520) {
System.out.println(this.bookName);
}
}
}
原文地址:https://www.cnblogs.com/xiaolantian/p/12584209.html
- Greenrobot-EventBus源码学习(六)
- Greenrobot-EventBus源码学习(五)
- writeup分享 | 近期做的比较好的web
- Greenrobot-EventBus源码学习(四)
- Linux基础(day38)
- EventBus 源码学习笔记(三)
- 10.35 screen工具
- 10.34 linux系统日志
- 10.32/10.33 rsync通过服务同步
- 适合破解新手的160个crackme练手之03
- EventBus源码学习笔记(二)
- 11.10/11.11/11.12 安装PHP5
- 领读《深入浅出NODEJS》—第二章 模块机制
- PHP的libcurl中存在的一些问题
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- MySQL事务 Krains 2020-08-09
- Linux本地提权漏洞复现与检测思路
- 内容安全策略( CSP )
- [译] 优化 React APP 的 10 种方法
- 如何免登陆观看b站大会员番剧
- 聊聊越来越火的对象存储
- AJAX的基本原理及实例解析。
- Docker私有镜像仓库是什么?
- React Native布局详细指南
- 走进Golang之Context的使用
- 「Workshop」第十一期:降维
- 开始在 GitHub 上写博客
- 微信公众号菜单点击发送天气预报
- SAP CRM Fiori应用如何启用Sales Office和Sales Group两个字段
- 通过注册表调整 Windows 8 窗口边框宽度