java编程思想-第五章-某些练习题
参考https://blog.csdn.net/caroline_wendy/article/details/46844651
10&11
finalize()被调用的条件
Java1.6以下的条件:
(1)类未被调用(置null)(2)调用System.gc()
1.8的条件:
(1)调用System.gc().(在调用了System.gc()之后,finalize()才被执行,也就是在执行最后一个 ‘}’时,finalize()才被执行)
//: Main.java /**
* 垃圾回收
* 注意: Java环境1.6可以, 1.8不可以, 垃圾回收机制改变.
*/ class Test {
@Override
protected void finalize(){
System.out.println("finalize");
// super.finalize();
}
} class Main {
public static void main(String[] args) {
Test t = new Test();
t = null; // 确保finalize()会被调用
System.gc();
}
}
/**
* Output:
finalize
*///:~
12
清理对象时, 会调用finalize()函数, 并且会保留存储数据, 如T2;
在清理对象时, 会入栈出栈, 先入后清理, 后入先清理.
//: Main.java /**
* 垃圾回收
* 注意: Java环境1.6可以, 1.8不可以, 垃圾回收机制改变.
*/ class Tank {
boolean isFull = false;
String name;
Tank(String name) {
this.name = name;
}
void setEmpty() {
isFull = false;
}
void setFull() {
isFull = true;
} @Override
protected void finalize(){
if (!isFull) {
System.out.println(name + ": 清理");
}
// super.finalize();
}
} class Main {
public static void main(String[] args) {
Tank t1 = new Tank("T1");
Tank t2 = new Tank("T2");
Tank t3 = new Tank("T3");
t1.setFull();
t2.setEmpty();
t1 = null;
t2 = null;
t3 = null;
System.gc();
}
}
/**
* Output:
T3: 清理
T2: 清理
*///:~
20
//: OtherMain.java /**
* 测试main的可变参数形式
* Created by wang on 15/7/30.
*/
public class OtherMain {
public static void main(String... args) {
for (String s : args) {
System.out.print(s + " ");
}
System.out.println();
}
}
/**
* Output:
* haha ahah haah ahha
*///:~
java编程思想-第五章-某些练习题的更多相关文章
- java编程思想-第13章-某些练习题
. 匹配任意一个字符 * 表示匹配0个或多个前面这个字符 + 表示1个或多个前面这个字符 ? 表示0个或1个前面这个字符 ^ 表示一行的开始 ^[a-zA-Z] :表示开头是a-z或者A-Z [^0- ...
- java编程思想-第六章-某些练习题
参考https://blog.csdn.net/caroline_wendy/article/details/47271037 3 package debug; import java.util.Ar ...
- java编程思想第五章初始化与清理
5.1使用构造器确保初始化: 构造器与一般方法一样,但是没有返回值,且其方法名与类名完全相同. 不接受任何参数的构造器成为默认构造器,也叫无参构造器. 5.2 方法重载: 为什么会有方法重载? 构造器 ...
- Java编程思想——第17章 容器深入研究 读书笔记(三)
七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...
- Java编程思想——第17章 容器深入研究(two)
六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add ...
- Java编程思想 第21章 并发
这是在2013年的笔记整理.现在重新拿出来,放在网上,重新总结下. 两种基本的线程实现方式 以及中断 package thread; /** * * @author zjf * @create_tim ...
- 关于 java编程思想第五版 《On Java 8》
On Java 8中文版 英雄召集令 这是该项目的GITHUB地址:https://github.com/LingCoder/OnJava8 广招天下英雄,为开源奉献!让我们一起来完成这本书的翻译吧! ...
- Java编程思想学习(五)----第5章:初始化与清理
随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一. C++引入了构造嚣(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构造器,并 ...
- Java编程思想-第四章练习题
练习1:写一个程序,打印从1到100的值 public class Print1To100{ public static void main(String args[]){ for(int i = 1 ...
随机推荐
- obj-c编程14:Cocoa和Cocoa Touch简介
这一篇篇幅相对少很多,几乎没有代码,全部都要靠本猫的语言组织能力啊!Cocoa框架在前面讲解F库时曾简单做过介绍,现在再具体说一说喽.各位童鞋是否已经发现鸟,前面所写的所有代码都是基于终端(或称之为c ...
- 关于MySQL 5.6.24 解压缩版重启电脑后,无法启动的问题
最近的项目需要用到mysql,想起以前安装过,就得应该没啥问题.也不知道是软件更新换代的问题,还是版权问题,网上找的msi版本的mysql都很难安装,一开始要安装.NET,我忍了,然后又要安装Visu ...
- werfault进程使用CPU率高
werfault进程是Windows vista 错误报告进程,是用来向微软反馈报告.是安全的正常进程. 解决方法:1.打开控制面板”—“系统和维护”,点击“问题报告和解决方案”. 2.点击“更改设置 ...
- Webapck项目开发基本构建及配置
1.创建项目文件夹 myapp 手动创建myapp,或mkdir myapp 2.cd myapp 3.npm init (初始化项目) 4.一路回车(关于项目信息的填写,可以不写,一路回车即可) 可 ...
- 玩转Git入门篇
最近项目使用到Git管理项目,所以就学习了一番,随然网上关于 Git的文章铺天盖地,我还是整理下总结下自己学习Git相关笔记,希望也能帮助到需要他的小伙伴们,O(∩_∩)O~ 简介 Git 是分布式版 ...
- Java 故障安全异常处理
异常处理代码必须保证其故障安全机制,其中一条重要的规则如下: 在try-catch-finally块抛出的最后一个异常将会在调用堆栈中传递. 所有早期异常将会消失. 如果从一个catch或finall ...
- Install OpenCV 3.0 and Python 2.7+ on OSX
http://www.pyimagesearch.com/2015/06/15/install-OpenCV-3-0-and-Python-2-7-on-osx/ As I mentioned las ...
- mysql经典面试题
数据库优化:这个优化法则归纳为5个层次:1. 减少数据访问(减少磁盘访问)2. 返回更少数据(减少网络传输或磁盘访问)3. 减少交互次数(减少网络传输)4. 减少服务器CPU开销(减少CPU及内存开销 ...
- 一个简单而实用的JQ插件——lazyload.js图片延迟加载插件
前 言 Cherish 看多了炫酷的插件之后再来看这么一个小清新的东西,是不是突然感觉JQ插件感觉很友好了,简单强大最重要的是实用. 这篇文章将详细讲解一下lazyload.js的用法 lazy ...
- 分享一下在aspx页面弹框的设置代码
public static class MessageBox { /// <summary> /// 显示消息提示对话框 /// </summary> /// <para ...