当前位置: 首页 > news >正文

四、Object 通⽤⽅法

        Object是Java中所有类的基类,是最顶级的父类。在Java中,每个类都直接或间接地继承自Object类,即使没有显式地声明继承关系,Java也会自动为每个类添加extends Object。这意味着,Object类中定义的方法可以被所有Java类使用。

public native int hashCode()
public boolean equals(Object obj)
protected native Object clone() throws CloneNotSupportedException
public String toString()
public final native Class<?> getClass()
protected void finalize() throws Throwable {}
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout) throws InterruptedException
public final void wait(long timeout, int nanos) throws InterruptedException
public final void wait() throws InterruptedException

        以下是一些Object类中常见的方法及其应用场景:

1. toString(): 返回对象的字符串表示形式。此方法在打印对象或需要对象的可读字符串描述时非常有用。通常需要在自定义类中重写此方法,以提供更有意义的信息,而不是默认的内存地址。

2. equals(Object obj): 比较两个对象是否相等。默认实现是比较两个对象的引用是否相同,即是否指向内存中的同一个位置。在很多情况下,需要根据对象的内容来重写此方法,以实现基于值的比较。

3. hashCode(): 返回该对象的哈希码值。这个方法通常与equals()一起重写,用于确保当两个对象通过equals()判断为相等时,它们的哈希码也必须相等。这对于哈希表(如HashMap、HashSet)的正确工作至关重要。

4. clone(): 创建并返回此对象的一个副本。此方法用于对象的浅复制,但使用时需要注意深复制和浅复制的区别,以及克隆机制的正确实现。

5. getClass(): 返回此Object的运行时类。此方法用于获取对象的实际类型信息,常用于反射操作中。

6. notify(), notifyAll(), wait(): 这些方法用于线程间的通信。wait()使当前线程等待,直到另一个线程调用此对象的notify()或notifyAll()方法。这些方法在实现多线程间的同步和协调时非常重要。

        了解并适当重写Object类中的这些方法,可以增强自定义类的功能性和灵活性,特别是在涉及到对象比较、打印输出、线程同步等场景下。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • es master 节点数据丢失导致数据节点加入集群失败的灾难恢复
  • C# 之工控机数据类型 高低位(大小端)、BitConverter、IsLittleEndian、字节数组转换(高低位)
  • Redis 主从复制、哨兵机制关键参数与命令
  • Spring Boot + Spring Cloud 入门
  • java模拟多ip请求【搬代码】
  • 基于STM32的农业大棚温湿度采集控制系统的设计
  • git实现多人协作开发同一个项目
  • 100个python的基本语法知识【下】
  • 【洛谷】P2241 统计方形(数据加强版)——C++
  • dockerfile部署wordpress
  • 【CTFWP】ctfshow-萌新-web1-7
  • html+css前端作业 王者荣耀官网6个页面无js
  • iOS应用冷启动优化,可以做哪些事情
  • ArcGIS Pro SDK (九)几何 12 多面体
  • 决策树的概念
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Android单元测试 - 几个重要问题
  • CODING 缺陷管理功能正式开始公测
  • Elasticsearch 参考指南(升级前重新索引)
  • express.js的介绍及使用
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • 动态规划入门(以爬楼梯为例)
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 那些年我们用过的显示性能指标
  • 区块链将重新定义世界
  • 设计模式(12)迭代器模式(讲解+应用)
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 优化 Vue 项目编译文件大小
  • 原生js练习题---第五课
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 阿里云移动端播放器高级功能介绍
  • 容器镜像
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #QT(一种朴素的计算器实现方法)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (C#)一个最简单的链表类
  • (Charles)如何抓取手机http的报文
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (分享)自己整理的一些简单awk实用语句
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (三)终结任务
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (未解决)macOS matplotlib 中文是方框
  • (一)、python程序--模拟电脑鼠走迷宫
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • .NET CORE Aws S3 使用
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 反编译_.net反编译的相关问题
  • /tmp目录下出现system-private文件夹解决方法
  • ??eclipse的安装配置问题!??
  • @AliasFor 使用
  • []使用 Tortoise SVN 创建 Externals 外部引用目录