【面试干货】Object 类中的公共方法详解

【面试干货】Object 类中的公共方法详解

  • 1、clone() 方法
  • 2、equals(Object obj) 方法
  • 3、hashCode() 方法
  • 4、getClass() 方法
  • 5、wait() 方法
  • 6、notify() 和 notifyAll() 方法


💖The Begin💖点点关注,收藏不迷路💖

在 Java 中,Object 类是所有类的超类(或称为父类)。它包含了一些重要的公共方法,这些方法为所有 Java 对象提供了基础的行为。下面我们将详细探讨这些公共方法。

1、clone() 方法

clone() 方法是 Object 类中的一个保护方法用于创建并返回此对象的一个拷贝。 这个拷贝是一个 浅拷贝,意味着如果对象中的字段是引用类型,那么拷贝的只是引用地址,而不是引用的对象本身。

注意:只有实现了 Cloneable 接口的类才可以调用 clone() 方法,否则会抛出 CloneNotSupportedException 异常。

public class MyClass implements Cloneable {  @Override  protected Object clone() throws CloneNotSupportedException {  return super.clone();  }  
}  MyClass original = new MyClass();  
MyClass cloned = (MyClass) original.clone();

2、equals(Object obj) 方法

equals() 方法在 Object 类中用于比较两个对象是否相等。 在 Object 类中,equals() 方法的默认实现是比较两个对象的引用是否相等,这与 == 操作符的行为是一致的。

但是,在实际开发中,我们经常需要比较对象的内容是否相等,因此子类通常会重写 equals() 方法。

@Override  
public boolean equals(Object obj) {  if (this == obj) return true;  if (obj == null || getClass() != obj.getClass()) return false;  MyClass other = (MyClass) obj;  // 比较对象的字段是否相等  return /* 比较字段的逻辑 */;  
}

3、hashCode() 方法

hashCode() 方法返回该对象的哈希码值。 哈希码在哈希表中非常重要,因为哈希表通过哈希码来快速定位对象在表中的位置。当重写 equals() 方法时,通常也需要重写 hashCode() 方法,以确保相等的对象具有相同的哈希码。

@Override  
public int hashCode() {  // 生成哈希码的逻辑  return /* 哈希码值 */;  
}

4、getClass() 方法

getClass() 方法是一个 final 方法,用于返回表示此 Object 运行类(由哪个类创建的实例)的 Class 对象。

Class<?> clazz = obj.getClass();

5、wait() 方法

wait() 方法使当前线程等待该对象的锁,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者等待的时间超过了指定的时间。当前线程必须是该对象的拥有者,也就是具有该对象的锁。

synchronized (obj) {  while (/* 等待条件 */) {  obj.wait(); // 等待,直到其他线程调用 notify 或 notifyAll  }  // 处理等待后的逻辑  
}

6、notify() 和 notifyAll() 方法

notify() 方法唤醒在此对象监视器上等待的单个线程(如果有的话)。

notifyAll() 方法唤醒在此对象监视器上等待的所有线程。这两个方法也必须在同步块或同步方法中调用。

synchronized (obj) {  // 改变等待条件  obj.notify(); // 唤醒一个等待的线程  // 或  obj.notifyAll(); // 唤醒所有等待的线程  
}

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

报工计件工资核算h5开源版开发

报工计件工资核算h5开源版开发 小型计件工资管理系统&#xff0c;支持后台制定工价&#xff0c;核算工资。支持员工H5端报工&#xff0c;和查看工资情况。 H5手机端 支持在线报工&#xff0c;支持查看我的工资。 自定义费用项 在基础计件工资基础上增加扣除和增加项&#xff…

Spring Boot中 CommandLineRunner 与 ApplicationRunner作用、区别

CommandLineRunner 和 ApplicationRunner 是 Spring Boot 提供的两种用于在应用程序启动后执行初始化代码的机制。这两种接口允许你在 Spring 应用上下文完全启动后执行一些自定义的代码&#xff0c;通常用于执行一次性初始化任务&#xff0c;如数据库预填充、缓存预热等。 Co…

基于Vue.js的电商前端模板:Vue-Dashboard-Template的设计与实现

摘要 随着电子商务的飞速发展&#xff0c;前端页面的设计和实现变得愈发重要。本文介绍了一个基于Vue.js的电商前端模板——Vue-Dashboard-Template&#xff0c;旨在提供一个高性能、易扩展的电商平台前端解决方案。该模板遵循响应式设计、模块化、组件化开发等设计原则&#…

Python面试宝典第1题:两数之和

题目 给定一个整数数组 nums 和一个目标值 target&#xff0c;找出数组中和为目标值的两个数的索引。可以假设每个输入只对应唯一的答案&#xff0c;且同样的元素不能被重复利用。比如&#xff1a;给定 nums [2, 7, 11, 15] 和 target 9&#xff0c;返回 [0, 1]&#xff0c;因…

axios二次封装(详细+跨域问题)

一&#xff0c;为什么要对axios进行二次封装&#xff1f;答&#xff1a;主要是要用到请求拦截器和响应拦截器;请求拦截器&#xff1a;可以在发请求之前可以处理一些业务响应拦截器&#xff1a;当服务器数据返回以后&#xff0c;可以处理一些事情 二&#xff0c;axios的二次封装…

解决VSCode无法用ssh连接远程服务器的问题

原因&#xff1a; 因为windows自带的ssh无法连接远程服务器&#xff0c;需要用git底下的ssh.exe。 搜了很久&#xff0c;试过很多方法&#xff0c;包括替换掉环境变量中的ssh&#xff0c;但是都无效&#xff0c;最后发现是要在VSCode中配置需要使用哪个ssh.exe。 步骤&#…

Java学习 - 布隆过滤器

前置需求 需求 已经有50亿个电话号码&#xff0c;现在给出10万个电话号码&#xff0c;如何快速准确地判断这些电话号码是否已经存在&#xff1f; 参考方案 通过数据库查询&#xff1a;比如MySQL&#xff0c;性能不行&#xff0c;速度太慢将数据先放进内存&#xff1a;50亿*8字…

【环境配置】ubuntu中 Docker的安装

前言 Docker的使用&#xff0c;一直没有系统的梳理和记录&#xff0c;刚好最近看视频又再次的全面介绍到docker。于是记录下方便后面自己的使用&#xff0c;毕竟安装过程中还是会存在小的不丝滑。 1 Docker的简单介绍 这里的介绍来自于大模型的问答&#xff08;LLM时代的到来&a…

开启网络监控新纪元:免费可视化工具助力网络信息链路拓扑监控大屏

在数字化浪潮汹涌的今天&#xff0c;网络已成为我们生活、工作的不可或缺的一部分。然而&#xff0c;你是否曾经想过&#xff0c;在这个庞大的网络世界中&#xff0c;是谁在默默守护着每一条信息的传输&#xff0c;确保我们的数据安全、稳定地抵达目的地&#xff1f; 网络信息链…

【力扣高频题】004.两个正序数组的中位数

------------------ 长文警告 ------------------ 4.两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O ( l o g ( m n ) ) O(log(mn)) O…

工业数据分析要用FusionInsight MRS IoTDB ?

随着工业互联网逐步兴起&#xff0c;在加速工业自动化、智能化的同时&#xff0c;也进一步加速工业生产时间序列数据的产生速度。但对于工业生产中的数据分析&#xff0c;仍然存在重复样本多&#xff0c;数据膨胀率大&#xff0c;缺乏专业易用的平台&#xff0c;这些问题成为阻…

NFS文件共享服务搭建

文章目录 NFS介绍特点用途 NFS版本NFS安装0. 安装规划1. 安装NFS服务2. 启动并启用服务3. 创建共享目录4. 配置NFS共享5. 应用NFS配置6. 防火墙设置7. 验证NFS服务8. 客户端挂载9. 验证挂载10. 客户端卸载nfs挂载11. 自动挂载 参考文章 NFS介绍 NFS&#xff08;Network File Sy…

linux的常用系统维护命令

1.ps显示某个时间点的程序运行情况 -a &#xff1a;显示所有用户的进程 -u &#xff1a;显示用户名和启动时间 -x &#xff1a;显示 没有控制终端的进程 -e &#xff1a;显示所有进程&#xff0c;包括没有控制终端的进程 -l &#xff1a;长格式显示 -w &#xff1a;宽…

k8s部署mongodb副本高可用集群

此版本的NFS为单点,仅为练习使用,生产环境建议使用cephfs的卷类型,避免单点。或者通过keepalived加Sersync的方案对NFS作容灾处理即可用于生产环境。当然,对于开发或测试环境,方便起见,直接使用单点的NFS加mongodb statefulSet方案是最为清晰简便的。 mongodb集群部署分…

Gemma 2大模型:性能更优,效率更高

当地时间6月27日&#xff0c;谷歌正式发布了在一个月前的I/O开发者大会上预告过的Gemma 2大模型。这款新模型相较于第一代Gemma模型&#xff0c;在性能和推理效率上都有了显著的提升&#xff0c;为AI领域带来了新的突破。 据谷歌介绍&#xff0c;Gemma 2模型包括9B和27B两种参…

创建github个人博客

文章目录 安装Hexo安装git安装Node.js安装 Hexo git配置SSH key配置ssh 搭建个人博客新建博客生成静态网页 本文主要参考 【保姆级】利用Github搭建自己的个人博客&#xff0c;看完就会 安装Hexo 参考官方文档&#xff1a;https://hexo.io/zh-cn/docs/ Hexo 是一个快速、简洁且…

微服务实战系列之云原生

前言 话说博主的微服务实战系列从去年走到今天&#xff0c;已过去了半年多了。本系列&#xff0c;博主主要围绕微服务实践过程中的主要组件或工具展开介绍。其中基本覆盖了我们项目或产品研发过程中&#xff0c;经常使用的中间件或第三方工具。至此&#xff0c;该系列也该朝着…

2024年河北省计划招聘“特岗计划”教师2300名

2024年河北省计划招聘“特岗计划”教师2300名 报名时间&#xff1a;6月28日9:00至7月2日18:00 笔试准考证打印&#xff1a;7月11日-7月13日 笔试时间&#xff1a;7月14日上午9:00-11:30 面试时间&#xff1a;8月3日至8月5日 报名网站&#xff1a;河北教师教育网 报名照规格&…

2024全新【大模型学习路径导航】从入门到精通的全面规划

引言 随着人工智能技术的迅猛发展&#xff0c;大模型成为了引领技术变革的关键力量。无论你是对大模型领域感兴趣的初学者&#xff0c;还是希望深化理解并应用大模型的开发者&#xff0c;这份精心策划的学习路径将为你提供从零基础到精通的全面指导。 第一阶段&#xff1a;基…