题目:编写具有finalize方法的类,并在方法中打印消息。在main中为该类创建一个对象。试着解释这个程序的行为。
分析:大多数时候我们不需要编写finalize方法,因为jvm垃圾回收器已经帮我们做好了一切,我们什么时候需要它呢?如果我们的对象不是new获得的内存空间,或者调用了naive方法,在方法中用其他方式获得内存空间,我们需要finalize方法告诉编译器如何释放内存空间。
它的工作流程如下:一旦垃圾回收器准备释放对象的空间,先调用其finalize方法,在下一次垃圾回收动作发生的时候,才会真正的回收。
我们需要注意的是fianlize方法并不是析构方法,它可能永远不会被调用
package iteye; public class test { @Override public void finalize(){ System.out.println("start finalize "+this); } public static void main(String[] args) { test t=new test(); t=null; System.gc(); } }
运行之后我们发现时而又输出,时而没有,这就说明了finalize的不确定性。
相关推荐
第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为 5.1.4 包的停用 5.2 Java访问指示符 5.2.1 “友好的” 5.2.2 public:接口访问 5.2.3 private:不能接触 ...
《Java编程思想》是 Bruce Eckel 的经典著作,旨在深入阐述Java编程语言的核心概念和机制。这本书强调了Java作为一门“纯粹”的面向对象语言,与C++相比,它在设计时更加注重对象导向的本质。虽然C++和Java都是混合...
Java 中的 finalize() 方法是垃圾回收器在回收对象时调用的第一个方法。finalize() 方法相当于析构函数,它是垃圾回收器回收一个对象时第一个要调用的方法。finalize() 方法的主要作用是释放对象占用的系统资源,...
### 第5章 隐藏实现 - **5.1 封装:库单元** - 介绍了封装的概念,以及如何通过封装来隐藏实现细节。 - 包括创建独一无二的封装名等内容。 这些章节覆盖了Java编程的基础知识,从面向对象的基本概念出发,逐步...
- `JAVA1-1-01`和`JAVA1-1-02`涉及编写Application和Applet程序。Application是独立运行的程序,而Applet则需要在Web浏览器中运行。这涉及到Java类的定义,main方法的使用,以及如何编译和运行Java程序。 2. **...
### Java基础知识练习题详解 #### 1. 无法读取xxx.java 文件 - **问题解析**:如果遇到“无法读取 xxx.java”这样的错误提示,通常意味着文件路径不正确、文件不存在或者没有权限访问该文件。 - **解决方法**: - ...
finalize 方法是 Java 编程语言中一个非常重要的方法,它与 Java 编程中的垃圾回收器有着紧密的关系。当一个对象变成一个垃圾对象的时候,如果此对象的内存被回收,那么就可以调用系统中定义的 finalize 方法来完成...
`super()`和`this()`方法只能在构造函数的第一行调用,用于调用父类的构造函数或本类的另一个构造函数。 15. **方法参数能否为`final`** - **知识点**: 方法参数的`final`修饰。 - **解析**: 错误。方法的参数...
《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地介绍了Java语言的核心概念和技术,对于初学者和有经验的程序员来说都是极好的学习资源。PDF版使得读者可以随时随地电子阅读,方便快捷。 首先,Java...
在本课程"【IT十八掌徐培成】Java基础第26天-03.JVM结构-finalize-gc"中,我们将深入探讨JVM的结构、`finalize`方法以及垃圾收集(Garbage Collection,简称GC)机制。以下是这些主题的详细阐述: 1. JVM结构: - ...
1. **Java基础知识**:SCJP练习题中会涉及到Java的基本语法,如变量声明、数据类型、运算符、流程控制语句(if-else、switch、for、while等)。此外,还包括面向对象的基础概念,如封装、继承、多态。 2. **类与...
以上就是根据给定的Java练习题解析的相关知识点,涵盖了Java的基本语法、类和对象、文件操作、多线程、GUI编程、垃圾回收以及面向对象编程的核心概念。理解并掌握这些知识点对于学习和使用Java编程至关重要。
### Java练习题库知识点解析 #### 一、Object类及其方法 **1. Object类概述** - **Object类**: 是所有Java类的根类,它位于`java.lang`包中,提供了许多基本的方法,这些方法可以被其他任何类继承并使用。 - **...
Java编程语言练习题详解 1. 是非题 1. **正确**:所谓缺省构造函数就是没有参数的构造函数。Java允许类定义一个无参构造函数,方便实例化对象。 2. **错误**:Java的char数据类型是16位的,它可以表示Unicode字符...
在Java编程语言中,`finalize()`方法是一个特殊的方法,它属于`Object`类,主要用于对象销毁前执行一些必要的清理工作。然而,随着Java版本的更新和垃圾收集机制的改进,`finalize()`方法逐渐失去了其原本的重要性,...
Java中的`finalize()`方法是Java语言提供的一种机制,用于在对象被垃圾回收之前进行资源清理。这个方法在Java的`Object`类中被定义为`protected`类型,因此所有Java类都能够覆盖它来实现特定的清理操作。在垃圾回收...