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 ...
随机推荐
- java main方法执行sql语句
public static void main(String[] args) throws Exception{ String driver = "oracle.jdbc.driver.Or ...
- Django中的原子事务相关注意事项
Django中的原子事务支持(transaction.atomic)方式函数装饰器或者with语句,这种方式特别是前者和spring里面的AOP事务支持方式基本等同,当然其实质方式都是原始的try.. ...
- mysql distinct field1,field2,field3, .... from table
mysql distinct field1,field2,field3, .... from table 我们知道 这样的sql可以去掉重复项 (field1的重复项); select distinc ...
- Android Studio 插件开发详解三:翻译插件实战
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 一:概述 如果不了解插件开发基础的同学可以 ...
- 纯CSS炫酷的3D旋转
<html><head><meta charset="utf-8"><title>纯CSS炫酷的3D旋转</title> ...
- window.open打开新窗体并用post方式传参
function openPostWindow(url,data,name){ //url要跳转到的页面,data要传递的数据,name显示方式(可能任意命名) var tempForm = docu ...
- 程序员DD 《Spring boot教程系列》补充
最近在跟着程序员DD的Spring boot教程系列学习Spring boot,由于年代原因,Spring boot已经发生了一些变化,所以在这里进行一些补充. 补充的知识大多来自评论区,百度,Sta ...
- 设计模式之模板方法(Template Method)
在整理模板方法之前,先来说点废话吧.除了记录学习总结,也来记录一下生活吧. 我们公司的老板在北京,老板也会因为项目来公司,不过不是天天来.公司有个同事,只要老板不在就天天迟到,而且一天比一天晚,经常来 ...
- 第二章:第一个Netty程序
第一步:设置开发环境 • 安装JDK,下载地址http://www.oracle.com/technetwork/java/javase/archive-139210.html • 下载netty ...
- Mybatis配置文件SqlMapConfig.xml中的标签
SqlMapConfig.xml配置文件中的属性 1 配置内容 properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器 ...