Java Object 类方法2025 年 8 月 5 日 | 阅读 8 分钟 在 Java 中,Object 类属于 java.lang 包。它是所有 Java 类的父类,因此位于类层次结构的顶端。这意味着每个 Java 类都直接或间接继承 Object 类的所有方法。这些方法提供了所有 Java 对象共有的基本功能。 Object 类方法下图显示了 Object 类的一些常用方法。 ![]() Object.getClass() 方法它是 Object 类的 final 方法,返回对象的运行时类。我们无法重写此方法。其主要用途是获取对象的特定类信息,包括其名称、父类以及它正在使用的任何接口。 语法 示例:Object.getClass() 方法编译并运行输出 Computer class java.lang.String Object.toString() 方法该方法返回该方法的字符串表示(即“文本上表示”该对象)。默认情况下,如果未重写,它将显示一个唯一标识内存中对象的字符串。例如,Demo@1a2b3c4d,其中 Demo 是类名。 由对象所属类的名称、at 符号“@”以及对象的哈希码的无符号十六进制表示组成的字符串。 换句话说,此方法返回一个字符串,该字符串等于 语法 示例:Object.toString() 方法编译并运行输出 Book{title='1984', author='George Orwell'} Object.equals() 方法该方法逻辑上比较两个对象,检查两个对象是否相等。注意,该方法不比较引用相等性。 Object 类的 equals 方法实现了对对象最能区分的等价关系;也就是说,对于任何非 null 的引用值 x 和 y,此方法仅当 x 和 y 指向同一对象(x == y 的值为 true)时才返回 true。 示例:Object.equals() 方法编译并运行输出 obj1.equals(obj2): false obj1.equals(obj3): true obj2.equals(obj3): false Object.hashCode() 方法hashCode() 方法返回一个整数值(哈希码),代表对象。对于在基于哈希的集合(如 HashMap、HashSet 和 Hashtable)中使用对象至关重要。 Object 中的默认实现通常基于对象的内存地址返回值。它是一个原生方法,意味着它是在特定于平台的代码中实现的,而不是纯 Java。 当我们尝试重写 equals() 方法时,需要重写 hashCode() 方法。它确保相等的对象具有相同的哈希码。如果对象相等,我们得到相同的哈希码;如果不相等,我们得到不同的哈希码。 示例:Object.hashCode() 方法编译并运行输出 obj1.equals(obj2): false obj1.equals(obj3): true obj2.equals(obj3): false Object.clone() 方法该方法创建并返回(一个新对象)对象的副本。 “副本”的确切含义取决于对象的类。默认情况下,它执行浅拷贝。 该方法支持对象的克隆。要使一个类可克隆,它必须实现 Cloneable 接口(一个标记接口)。如果未实现 Cloneable 接口,则抛出 CloneNotSupportedException。 语法 要了解更多,请参阅 Java 中的对象克隆 示例:Object.clone() 方法编译并运行输出 101 Andrew 101 Andrew Object.finalize() 方法该方法用于在对象从内存中移除之前对其执行清理操作(例如,关闭打开的文件、释放内存或关闭连接)。它由垃圾回收器在对象上调用。 语法 当垃圾回收器确定对象不再被程序的任何部分引用时,它会执行,表示该对象可以被回收。 Java 虚拟机对任何给定对象都不会调用 finalize 方法超过一次。 注意:不要依赖 finalize() 进行关键的资源清理。要了解更多,请参阅 Java 中的 finalize() 方法 示例:Object.finalize() 方法编译并运行输出 Object created Main method completed finalize() is called before an object is garbage collected Object.wait() 方法它是用于线程间通信的 final 方法。当前线程将等待,直到另一个线程调用此对象的 notify() 方法或 notifyAll() 方法。 它必须在同步块内调用(否则会得到 IllegalMonitorStateException)。它是一个来自 java.lang.Object 的方法,而不是来自 Thread 的,因此可以用于任何对象。 语法 当前线程必须拥有该对象的监视器。该线程会释放该监视器的所有权,并等待直到另一个线程通过调用 notify 方法或 notifyAll() 方法来唤醒等待在该对象监视器上的线程。然后,该线程会等待直到它能够重新获得监视器的所有权并恢复执行。 示例:Object.wait() 方法编译并运行输出 Thread waiting... Thread notifying... Thread resumed. Object.notify() 方法该方法用于唤醒在该对象监视器上等待的单个线程。如果有任何线程在该对象上等待,将选择其中一个线程唤醒。选择是任意的,并且由实现自行决定。线程通过调用 wait 方法之一来等待对象的监视器。 语法 该方法只能由拥有该对象监视器的线程调用。线程可以通过以下三种方式之一成为对象监视器的所有者
示例:Object.notify() 方法编译并运行输出 Consumer waiting... Producer trying to produce... Producer produced and notified. Consumer consumed. 解释 在上面的程序中,Consumer 线程一直等待直到 available 为 true。Producer 设置 available = true 并调用 notify() 来唤醒消费者。消费者恢复执行并处理“已生产”的项。 结论理解这些 Object 类方法对于有效的 Java 编程至关重要,尤其是在设计类、使用集合或处理并发操作时。正确重写 toString()、equals() 和 hashCode() 是 Java 许多应用程序中可靠对象行为的基础,是一种非常常见且重要的实践。 Object 类方法选择题1) Java 中的每个类,无论是否显式扩展,都直接或间接继承自 _____ 类。
答案:c) 解释:所有 Java 类都继承自 Object。 2) 公共 final Class<?> getClass() 方法可靠地告诉我们对象的精确 _____。
答案: b) 解释:getClass() 揭示了对象在运行时确切的类型。 3) 重写 equals() 方法时,还必须重写 _____ 以维护其通用约定。
答案:c) 解释:为了正确行为,equals() 和 hashCode() 必须保持一致。 4) 要使一个类支持使用 clone() 方法进行对象克隆,它必须实现 _____ 接口。
答案: d) 解释:clone() 需要 Cloneable 接口才能工作。 5) 在现代 Java 中,由于 finalize() 方法不可预测的性质以及存在更好的资源管理实践,它通常被 _____。
答案:c) 解释:finalize() 是不可靠的,其使用不被推荐。 下一个主题一维数组(Java) |
在 Java 中,BLOB 和 CLOB 是用于分别存储二进制和字符大型对象的两种数据类型。它与其他数据类型(如 float、int、double 等)不同。统称为 LOB(大型对象)。在本节中,我们将讨论 BLOB...
阅读 4 分钟
在 Java 编程世界中,事件驱动的应用程序通常依赖于各种类型的事件来处理用户输入、响应系统事件或执行其他关键任务。Java 提供了一个全面的事件处理框架,包括接口、类和方法来有效管理事件。其中一种...
5 分钟阅读
Web 爬虫基本上是一种程序,主要用于浏览网络并查找新页面或更新页面以进行索引。爬虫从广泛的种子网站或流行 URL 开始,并深入广泛地搜索以提取超链接。爬虫...
阅读 10 分钟
Java 8 引入了对 Stream API 的重大增强,这彻底改变了我们处理数据集合的方式。Stream 提供了一种流畅高效的数据操作方法,为数据操作提供了函数式编程方法。在本节中,我们将探讨...
阅读 4 分钟
全字母句是一个字符串,其中包含英文字母表中的所有字母至少一次。这是一个典型的编程练习,因为它涉及字符串操作、数据模型和算法。在本节中,我们将学习到底什么是…
阅读 4 分钟
java.text.CollationElementIterator 有一个 secondaryOrder() 方法。CollationElementIterator 对象中的每个 Collation 元素都有一个 secondary 组件,由 CollationElementIterator 类提供。语法:public static final short secondaryOrder(int order) 参数:上述方法需要查找次要组件以用于排序元素...
阅读 4 分钟
在 C 和 C++ 编程语言中,从一个函数调用另一个函数的过程称为回调。函数的内存地址表示为函数指针。在 C 和 C++ 语言中,通过将函数指针传递给另一个函数来实现回调。与 C 不同...
阅读 4 分钟
轮转(RR)算法是一种 CPU 调度算法。它也用于网络调度器。它专门为分时系统设计。它也称为时间片调度算法。它与 FCFS 调度非常相似。在本节中,我们将讨论……
阅读 3 分钟
Java 中的 Shunting-yard 算法 Shunting-yard 算法是一种在计算机科学中广泛使用的算法,用于将中缀表达式转换为后缀或前缀表达式。在后缀表示法(也称为逆波兰表示法 RPN)中,运算符位于操作数之后,而在前缀表示法中……
阅读 8 分钟
给定一个字符串“str”,我们的任务是通过重新排列给定文本中的字符来创建一个字典序最小的回文串。如果没有这样的字符串,则将返回消息“不存在这样的回文串”。示例 1:输入:字符串 str = "madam" 输出:字典序...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India