Java基础之Object通用方法

从零到一,打造你的无人机侦察兵!树莓派+Python+MQTT,实时目标检测全攻略 物联网、人工智能与计算机视觉三大前沿技术的深度融合。 阅读详情

Object通用方法

1.equals()

(1)等价关系

五个条件:自反性  对称性  传递性  一致性  与null的比较

x.equals(null); // false;   x不是null对象

(2)等价于相等

  • 对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。
  • 对于引用类型,== 判断两个变量是否引用同一个对象,而 equals() 判断引用的对象是否等价。
Integer x = new Integer(1);
Integer y = new Integer(1);
System.out.println(x.equals(y)); // true
System.out.println(x == y);      // false

(3)实现

  • 检查是否为同一个对象的引用,如果是直接返回 true;
  • 检查是否是同一个类型,如果不是,直接返回 false;
  • 将 Object 对象进行转型;
  • 判断每个关键域是否相等。
@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        EqualExample that = (EqualExample) o;

        if (x != that.x) return false;
        if (y != that.y) return false;
        return z == that.z;
    }

2.hashCode()

等价的两个对象散列值一定相同,但是散列值相同的两个对象不一定等价,这是因为计算哈希值具有随机性,两个值不同的对象可能计算出相同的哈希值。

HashSet 和 HashMap 等集合类使用了 hashCode() 方法来计算对象应该存储的位置,因此要将对象添加到这些集合类中,需要让对应的类实现 hashCode() 方法。

可以将每个域都当成 R 进制的某一位,然后组成一个 R 进制的整数。

R 一般取 31,因为它是一个奇素数,如果是偶数的话,当出现乘法溢出,信息就会丢失,因为与 2 相乘相当于向左移一位,最左边的位丢失。并且一个数与 31 相乘可以转换成移位和减法:31*x == (x<<5)-x,编译器会自动进行这个优化。

3.toString()

默认返回 ToStringExample@4554617c 这种形式,其中 @ 后面的数值为散列码的无符号十六进制表示。

4.clone()

(1)cloneable
clone() 是 Object 的 protected 方法,它不是 public,一个类不显式去重写 clone(),其它类就不能直接去调用该类实例的 clone() 方法。

clone() 方法并不是 Cloneable 接口的方法,而是 Object 的一个 protected 方法。Cloneable 接口只是规定,如果一个类没有实现 Cloneable 接口又调用了 clone() 方法,就会抛出 CloneNotSupportedException。

(2)浅拷贝
拷贝对象和原始对象的引用类型引用同一个对象。

(3)深拷贝
拷贝对象和原始对象的引用类型引用不同对象。

(4)clone()的替代方案
使用 clone() 方法来拷贝一个对象即复杂又有风险,它会抛出异常,并且还需要类型转换。Effective Java 书上讲到,最好不要去使用 clone(),可以使用拷贝构造函数或者拷贝工厂来拷贝一个对象。

 

 

 

 

 

 

从零实现深度学习框架【实现自己的PyTorch(已完结)】 本着“凡我不能创造的,我就不能理解”的思想,此系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。 阅读详情

相关推荐

yolov5部署之七步完成tensorRT模型推理加速

目录前言step 1. 下载yolov5源码以及tensorrtx源码,并将yolov5s.pt转为.wts模型step 2. 确定并下载自己准备使用的CUDA版本。step 3. 根据自己的CUDA版本下载对应版本的cuDNN以及TensorRTstep 4. 根据自己使用的VS版本下载对应版本的OpenCVstep 5. 安装CUDAstep 6. 安装cuDNN、TensorRT以及验证TensorRT是否安装成功 前言     前段时间研究了Pytorch的环境配置,之后便从github上下载了yo

Christo的博客 4万+

Object(对象)转换成Bigdecimal--然后加减乘除或比较大小

对象转换成Bigdecimal--然后加减乘除或比较大小Object(对象)转BigdecimalBigdecimal的大小比较Bigdecimal的加减乘除注意 Object(对象)转Bigdecimal 我的项目经常用 Map<String,Object> map = new HashMap<String, Object>(); 接收数据, 那么当我用map.get(“key”)的时候, 获取的 value是 一个对象, 这个对象是BigDecimal类型的, 就需要转换处理

weixin_45305706的博客 1万+

Cadence IC 618实战:从与非门到环形振荡器的完整版图设计流程(含DRC/LVS避坑点)

本文详细介绍了使用Cadence IC 618进行从与非门到环形振荡器的完整版图设计流程,包括环境准备、基础设计规范、层次化设计、DRC/LVS验证及后仿真优化。特别提供了实战中的避坑技巧和优化建议,帮助工程师高效完成集成电路设计任务。

weixin_26886855的博客 405

Java Object 类常用方法

1. equals() : 判断两个对象是否等价。 Object类的默认实现(直接检查是否为同一个对象的引用): Object类equals()的默认实现并不能很好的体现equals()想要的功能。因为不指向同一个对象,两对象也可能等价(关键域相同)。 看String类equals()的实现: 这是一个标准的equals()的实现,大体思路是: 检查是否为同一个对象的引用,如果是直接返回 ...

OOC_ZC的博客 510

UE5热更新(通过Pak包加载关卡资源,并添加到流关卡)

请先阅读我上一篇文章)**

xialuhui的博客 6456

描述符链表(Descriptor Chain)是什么?

描述符链表是硬件加速数据传输的核心数据结构,通过链式描述符(包含地址、长度、控制标志等)实现DMA自动批量处理,显著降低CPU负载。其工作原理为:CPU初始化链表后,硬件按序处理每个描述符,完成自动跳转与中断通知。在网卡收包、NVMe存储等场景中应用广泛,优势包括批处理、低延迟和灵活调度。需注意内存对齐、缓存一致性等实现细节,优化手段包括预分配描述符池、环形缓冲区等。该技术是网络/存储领域提升吞吐量的关键方案。

guigenyi的专栏 773

两个object类型相除,并保留小数点后两位

<br /> public String getRate(Object obj1,Object obj2)<br /> {<br />      Integer first=Integer.parseInt(String.valueOf(obj1));<br />      Integer second=Integer.parseInt(String.valueOf(obj2));<br />      DecimalFormat df = new DecimalFormat("0.00");<br /> 

aiouwen521的专栏 2227

图解凸函数与凹函数:别再被数学定义搞晕了!

本文通过图解和生活化类比,深入浅出地解释了凸函数与凹函数的数学定义及其与日常直觉的差异。文章详细介绍了凸函数的图像特征、数学定义(包括二阶导数判断)、在机器学习中的重要性,以及常见误区和实际应用中的判断技巧,帮助读者彻底理解这一关键数学概念。

weixin_29159441的博客 650

Java中Object类常用的12个方法

Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”。Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object 类中的 public 方法。

李云龙的意大利面 2874

433M无线遥控器EV1527协议解码实战:从逻辑分析到代码优化

本文详细解析了433M无线遥控器EV1527协议的实战解码过程。从使用逻辑分析仪抓取波形、理解同步头与数据位编码原理开始,逐步深入代码实现。文章重点对比了原始定时器轮询法的痛点,并提出了基于“边沿捕获+时间戳”的优化方案,构建了高效、可移植且具备抗干扰能力的解码引擎,最后分享了跨平台移植的核心技巧。

weixin_29168813的博客 925

基于GA-BP遗传算法优化神经网络的多输入多输出数据预测-Python代码实现

多输入多输出的GA-BP神经网络

2301_80449389的博客 2306

java中两个数相除,求百分比

两位数相除,求百分比,保留两位小数,四舍五入; 写一个方法 /** * @param a * @param b * @return */ public int bs(int a ,int b){ return (int)((new BigDecimal((float) a / b).setScale(2, BigDecimal.ROU...

hp10061116的博客 2万+

11、基于拓扑质心和树编辑距离的RNA二级结构比较方法

本文介绍了一种基于拓扑质心和树编辑距离的RNA二级结构比较方法,特别适用于处理具有假结结构的RNA。通过PEELING算法识别拓扑质心并将其转换为树结构,结合树编辑距离进行高效比较,并提供工具planeGraph2tree实现该方法。博文详细描述了方法原理、操作流程以及应用示例,展示了其在功能性非编码RNA分析中的实用性。

resnet7explorer的博客 111

Java基础 Object通用方法

java Object通用方法介绍:equals(),hashcode(),toString(),clone()

jun319817的博客 256

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

缓冲池、String、StringBuffer和StringBuilder、Object通用方法-Java基础

1、缓冲池 1) new Integer(123) 每次都创建一个新的对象; 2) Integer.valueOf(123)会使用缓冲池中的对象,多次调用会去掉同一对象引用;先判断是否在缓冲池,如果在的话就直接返回缓冲池的内容。valueOf() 方法用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等。该方法是静态方法。该方法可以接收两个参数一个是字符串...

洋葱专栏-有灵魂的程序员 287

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java基础:(五)Object通用方法

一、Object对象的九个方法 getClass();hashCode();equals();clone();toString();notify();notifyAll();wait();finalize。 二、equals() equals()与==的区别: 对于基本类型,==判断两个值是否相等,基本类型没有equals()方法(八个基本类型); 对于引用类型,==判断两个实例是否...

weixin_30819163的博客 161

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java基础--关于Object的一些通用方法

equals(Object obj):判断两对象是否相同(String类重写了该方法) 1. equals() 与 == 的区别 对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。 对于引用类型,== 判断两个实例是否引用同一个对象,而 equals() 判断引用的对象是否等价。 Integer x = new Integer(1); ...

weixin_30437337的博客 141

Java基础(二)之继承、Object通用方法、关键字

有关继承、Object通用方法、关键字的相关知识。

qq_33457861的博客 442

Java基础-复习04-Object通用方法

一. 概览 public boolean equals(Object obj); public native int hashcode(); public String toString(); protected void finalize() throws Throwable{} protected native Object clone() throws CloneNotSupportedException public final native Class<?> getClass

codfishXY的博客 195

compareto方法_Java基础(二)之继承、Object通用方法、关键字

前言这段时间把基础这部分又过了一遍,归纳整理了有关继承、Object通用方法、关键字的相关知识。继承访问权限Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private、public、protected,还有一种不带任何修饰符(default)。如果不加访问修饰符,表示包级可见。protected 用于修饰成员,表示在继承体系中成员对于子类可见,但是这个访问修饰符对于类没有意义。设计...

weixin_36250058的博客 393

3. java基础 -- Object 通用方法

使用过 HashMap 我们就知道,通过 hash 计算之后,我们就可以直接定位出某个值存储的位置了那么试想一下,如果你现在要查询某个值是否在集合中?如果不通过 hash 方式直接定位元素(的存储位置),那么就只能按照集合的前后顺序,一个一个的询问比对了,而这种依次比对的效率明显低于 hash 定位的方式。这就是 hash 以及 hashCode 存在的价值。当我们对比两个对象是否相等时(

weixin_55888879的博客 147

从零开始的Java基础学习 (五) | Object 通用方法

五、Object 通用方法 ...

庭前云落的博客 196

java基础 3 Object通用方法(1)

Object通用方法(1)   clone:     浅复制 被复制对象的所有变量都含有与原对象相同的值,而所有对其他对象的引用仍然指向原来的对象,换言之,浅复制仅仅复 制所考虑的对象,而不复制它所引用的对象。   深复制 被复制对象的所有变量都含有与原对象相同的值,那些引用其他对象的变量将指向被复制的新对象,而不是原有的...

weixin_30270889的博客 78

idea实现抽象类的所有抽象方法_Java基础(二)之继承、Object通用方法、关键字...

前言这段时间把基础这部分又过了一遍,归纳整理了有关继承、Object通用方法、关键字的相关知识。继承访问权限Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private、public、protected,还有一种不带任何修饰符(default)。如果不加访问修饰符,表示包级可见。protected 用于修饰成员,表示在继承体系中成员对于子类可见,但是这个访问修饰符对于类没有意义。设计...

weixin_39747721的博客 337

【Java】Object类简单解析

Object类是Java中一个非常重要的类,它为所有的Java对象提供了一些通用的方法。通过重写Object类中的方法,我们可以定制化对象的行为,使得它们更符合我们的需求。因此,在编写Java代码时,我们应该充分了解Object类,并善于使用其中的方法,以便更好地实现我们的业务逻辑。Object类定义了一些通用方法,包括toString()、equals()、hashCode()、getClass()等。因此,Object类提供了一个共同的基础,使得所有的Java对象都能够使用Object类中定义的方法。

double222222的博客 1096

JAVA基础(二)--------三大特性之--继承(下)Object及对于所有对象都通用的方法

      说到继承,不得不提到的是所有对象的共同父类:Object 。      尽管Object是一个具体类,但设计它主要是为了扩展。      一:相等测试equals      查看Object的源代码我们可以知道,Object的equals比较的就是两个具体对象是否有相同的引用。     因此当我们不需要考虑类是否逻辑相等,或者超类覆盖的equals子类适用,那么我们都不需要覆盖Obje...

tanglixing的博客 305
上一篇: Java基础之运算、关键字
下一篇: Java基础之继承
trytrylmt
博客等级 码龄9年 7粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值