题目:编写名为Tank的类,此类的状态可以是“满的”或“空的”。其终结条件是:对象被清理时必须处于空状态。 请编写finalize()以检验终结条件是否成立,在main()中测试Tank可能发生的几种使用方式。
public class Tank{ public boolean state=false; public void changeState(boolean state){ this.state=state; } protected void finalize() throws Throwable{ if(state){ System.out.println("----满的,有问题---------"); throw new Throwable ("状态不为空!"); }else{ System.out.println("----空的,没问题---------"); super.finalize(); } } public static void main(String[] args) { new Tank(); System.gc(); System.runFinalization(); new Tank().changeState(true); System.gc(); System.runFinalization(); } }
再次声明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编程的基础知识,从面向对象的基本概念出发,逐步...
### Java基础知识练习题详解 #### 1. 无法读取xxx.java 文件 - **问题解析**:如果遇到“无法读取 xxx.java”这样的错误提示,通常意味着文件路径不正确、文件不存在或者没有权限访问该文件。 - **解决方法**: - ...
通过这些练习,初学者可以逐步熟悉Java的语法特性,掌握面向对象编程的基本思想,同时提升解决问题的能力。每个练习都是对前一知识点的巩固和深化,逐步构建起完整的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结构: - ...
以上就是根据给定的Java练习题解析的相关知识点,涵盖了Java的基本语法、类和对象、文件操作、多线程、GUI编程、垃圾回收以及面向对象编程的核心概念。理解并掌握这些知识点对于学习和使用Java编程至关重要。
SCJP(Sun Certified ...通过这些经典练习题的解答,考生不仅可以巩固Java编程的基础,还能提高问题解决能力和编程思维。在准备SCJP认证的过程中,考生应系统学习这些知识点,并通过大量练习来加深理解和应用。
在Java编程语言中,`finalize()`方法是一个特殊的方法,它属于`Object`类,主要用于对象销毁前执行一些必要的清理工作。然而,随着Java版本的更新和垃圾收集机制的改进,`finalize()`方法逐渐失去了其原本的重要性,...
Java编程语言练习题详解 1. 是非题 1. **正确**:所谓缺省构造函数就是没有参数的构造函数。Java允许类定义一个无参构造函数,方便实例化对象。 2. **错误**:Java的char数据类型是16位的,它可以表示Unicode字符...
### Java练习题库知识点解析 #### 一、Object类及其方法 **1. Object类概述** - **Object类**: 是所有Java类的根类,它位于`java.lang`包中,提供了许多基本的方法,这些方法可以被其他任何类继承并使用。 - **...
Java中的`finalize()`方法是Java语言提供的一种机制,用于在对象被垃圾回收之前进行资源清理。这个方法在Java的`Object`类中被定义为`protected`类型,因此所有Java类都能够覆盖它来实现特定的清理操作。在垃圾回收...