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/40368.shtml

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

相关文章

AI 驱动的数据中心变革与前景

文章主要探讨了AI计算时代数据中心的转型&#xff0c;涉及计算技术的多样性、规格尺寸和加速器的发展、大型语言模型&#xff08;LLM&#xff09;的发展、功耗和冷却趋势、基准测试的重要性以及数据中心的发展等方面。为大家提供深入了解AI基础设施发展的视角。 计算技术的多样…

Ubuntu(通用)—网络加固—ufw+防DNS污染+ARP绑定

1. ufw sudo ufw default deny incoming sudo ufw deny in from any to any # sudo ufw allow from any to any port 5353 protocol udp sudo ufw enable # 启动开机自启 # sudo ufw reload 更改后的操作2. 防ARP欺骗 华为云教程 arp -d删除dns记录arp -a显示arp表 ipconfi…

PTrade常见问题系列3

量化允许同时运行回测和交易的策略个数配置。 量化允许同时运行回测和交易的策略个数在哪里查看&#xff1f; 在量化服务器/home/fly/config/custom_config_conf文件中&#xff0c;其中运行回测的策略个数由backtest_switch&#xff08;是否限制普通回测个数&#xff09;及ba…

matlab 绘制高等数学中的二维函数示例

matlab 绘制高等数学中的二维函数示例 绘制高等数学中的二维函数示例绘制结果 绘制高等数学中的二维函数示例 clc,clear,close all; % 定义方程 eqn (x, y) (x.^2 y.^2).^3 - y.^4;% 绘制方程曲线和坐标轴 ezplot(eqn, [-2, 2, -2, 2]) hold on % 在同一图形中保持绘图% 绘…

S7-1200PLC学习记录

文章目录 前言一、S7-12001.数字量输入模块2. PNP接法和NPN接法 二、博图软件1. 位逻辑运算Part1. 添加新设备&#xff08;添加PLC&#xff09;Part2. 添加信号模块Part3. 添加信号板中模块Part4. 添加新块Part5. Main编程文件案例1案例2 -( S )- 和 -( R )-完整操作过程&#…

昇思25天学习打卡营第8天|ResNet50迁移学习

一、迁移学习定义 迁移学习&#xff08;Transfer Learning&#xff09;&#xff1a;在一个任务上训练得到的模型包含的知识可以部分或全部地转移到另一个任务上。允许模型将从一个任务中学到的知识应用到另一个相关的任务中。适用于数据稀缺的情况&#xff0c;可减少对大量标记…

掌握Linux网络:深入理解TC —— 你的流量控制利器

目录 简单概述&#xff1a; qdisc(队列)&#xff1a; 举例&#xff1a; Bash 整形队列算法&#xff1a; FIFO (First-In-First-Out) PFIFO (Priority FIFO) SFQ (Stochastic Fair Queuing) RED (Random Early Detection) HTB (Hierarchical Token Bucket) TBF…

谷粒商城笔记-04-项目微服务架构图简介

文章目录 一&#xff0c;网络二&#xff0c;网关1&#xff0c;网关选型2&#xff0c;认证鉴权3&#xff0c;动态路由4&#xff0c;限流5&#xff0c;负载均衡6&#xff0c;熔断降级 三&#xff0c;微服务四&#xff0c;存储层五&#xff0c;服务治理六&#xff0c;日志系统七&a…

在Apache HTTP服务器上配置 TLS加密

安装mod_ssl软件包 [rootlocalhost conf.d]# dnf install mod_ssl -y此时查看监听端口多了一个443端口 自己构造证书 [rootlocalhost conf.d]# cd /etc/pki/tls/certs/ [rootlocalhost certs]# openssl genrsa > jiami.key [rootlocalhost certs]# openssl req -utf8 -n…

你的机器人购物新体验——安全、高效、无忧

如果你跟我一样&#xff0c;对找到那些“恰到好处”的商品充满渴望&#xff0c;那么&#xff0c;让我来告诉你为什么BFT会成为你的下一个购物“心头好”。 BFT的优势 高效安全的支付体系&#xff1a;BFT交易系统保障了交易的安全性和透明性&#xff0c;让你的每一笔消费都安全…

Build a Large Language Model (From Scratch)附录B(gpt-4o翻译版)

来源&#xff1a;https://github.com/rasbt/LLMs-from-scratch?tabreadme-ov-file https://www.manning.com/books/build-a-large-language-model-from-scratch

【宠粉赠书】UML 2.5基础、建模与设计实践

为了回馈粉丝们的厚爱&#xff0c;今天小智给大家送上一套系统建模学习的必备书籍——《UML 2.5基础、建模与设计实践》。下面我会详细给大家介绍这本书&#xff0c;文末留有领取方式。 图书介绍 《UML 2.5基础、建模与设计实践》以实战为主旨&#xff0c;结合draw.io免费软件…

verilog行为建模(三):块语句

目录 1.块语句2.延迟赋值语句 微信公众号获取更多FPGA相关源码&#xff1a; 1.块语句 块语句用来将多个语句组织在一起&#xff0c;使得他们在语法上如同一个语句。 块语句分为两类&#xff1a; 顺序块&#xff1a;语句置于关键字begin和end之间&#xff0c;块中的语句以顺…

鸿蒙‘ohpm‘ 不是内部或外部命令,也不是可运行的程序-解决方案

&#x1f525; 博客主页&#xff1a; 小韩本韩&#xff01; ❤️ 感谢大家点赞&#x1f44d;收藏⭐评论✍️ 在鸿蒙的DevEco Studio的终端下输入 onpm -v 或者 你需要下载第三方ohpm包的时候提示‘ohpm‘ 不是内部或外部命令&#xff0c;也不是可运行的程序- 主要是因为我们…

学习测试1

计算机基础 1、计算机范式&#xff1a;冯诺依曼机 2、存储单元 bit、byte、KB、MB、GB3、网络 ip、域名、ping 域名、 ipconfig测试工作的流程 ------------------------------------------------------------------------------------------- 一 编写测试大纲 罗列测试…

文化创新与社交媒体:探索Facebook的足迹

在过去的十多年里&#xff0c;Facebook从一个简单的校园社交网络发展成为全球最大的社交媒体平台之一。它不仅改变了人们的沟通方式&#xff0c;更在许多方面推动了文化的创新和变革。本文将深入探索Facebook如何通过其平台的演进和功能创新&#xff0c;成为文化创新的重要推动…

Ubuntu / Debian安装FTP服务

本章教程,记录在Ubuntu中安装FTP服务的具体步骤。FTP默认端口:21 1、安装 pure-ftpd sudo apt-get install pure-ftpd2、修改默认配置 # 与 centos 不同,这里需要在 /etc/pure-ftpd/conf 文件夹下执行下列命令,增加对应配置文件: # 创建 /etc/pure-ftpd/conf/PureDB 文件…

【数据结构】(6.2)堆的应用——Top-K问题(C语言)

系列文章目录 文章目录 系列文章目录问题引入一、TopK 问题 是什么&#xff1f;二、TopK 问题解决思路2.1 TopK 思路2.2 随机产生数字2.2 完整代码2.3 验证结果 问题引入 TopK 问题 (在一堆数据里面找到前 K 个最大 / 最小的数)。 一、TopK 问题 是什么&#xff1f; 生活中也…

船舶雷达与导航系统选择7/8防水插座的原因分析

概述 船舶雷达与导航系统在现代航海中扮演着至关重要的角色&#xff0c;它们为船舶提供准确的导航信息&#xff0c;确保航行的安全和效率。在这些系统中&#xff0c;7/8防水插座的使用尤为重要&#xff0c;因为它们能够在恶劣的海上环境中提供稳定的电力和信号连接。接下来&am…

Outlook发送大文件的问题是什么?怎么解决?

Outlook不仅是一款电子邮件客户端&#xff0c;还包括日历、任务、笔记、联系人等功能&#xff0c;同时与Microsoft Office套件中的其他应用程序&#xff08;如Word、Excel、PowerPoint等&#xff09;集成紧密&#xff0c;方便用户在不同应用程序之间切换&#xff0c;提高工作效…