Java equals()和==的区别

Java中的equals()与==的区别与用法 /如果当前字符串对象和传入的字符串对象的编码方式相同 if (coder() == aString.coder()) { //如果当前字符串和传入的字符串都是Latin1编码,则调用StringLatin1类的equals方法进行比较;} // 如果是String类型的实例 if (anObject instanceof String) { ////Object类型的对象强制转换为String类型 String anotherString = (String)anObject;// 输出 false。 阅读详情

1.equals()和==的区别

equals() 用来判断两个对象是否相等。
== : 它的作用是判断两个对象的地址是不是相等。

2.equals()方法

  • equals()方法的两种两种使用情况
    1.equals()方法没有重写,此时equals()的判断原理和==相同。
    2.equals()方法重写了,一般,我们都覆盖equals()方法来两个对象的内容相等;若它们的内容相等,则返回true(即,认为这两个对象相等)。

  • Object类中的equals()源码如下图所示
    在这里插入图片描述
    源码中通过判断两个对象的地址是否相等来区分它们是否相等,所以默认的情况下equals()的判断原理和==相同。

3.代码测试

首先写一个实体类People,拥有字段name。
代码如下:

public class People {
    private String name;

    public People() {

    }

    public People(String name) {
        this.name = name;
    }

}

测试代码:

	@Test
    public void testOverrideEquals(){
        People p1 = new People("lisi");
        People p2 = new People("lisi");
        System.out.println("equals:   "+p1.equals(p2));
        System.out.println("==:   "+(p1==p2));

    }

3.1 不重写equals()方法情况下,测试equals()方法和==的区别。

测试结果如下图所示
在这里插入图片描述
可见,在不重写equals()的情况下,equals()的判断机制和==相同

3.2 重写equals()方法情况下,测试equals()方法和==的区别。

此时重写People类的equals()方法,People实体类的代码如下:

public class People {
    private String name;

    public People() {

    }

    public People(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        People people = (People) o;
        return name.equals(people.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}

然后进行断点测试
在这里插入图片描述
1.创建了两个对象p1和p2,分别指向People@858和People@859,且他们的名字都为lisi。下一步进入到People类中的已经重写过的equals()方法,如下图所示。
在这里插入图片描述
2.第26行代码 判断传入的对象(p2) 和 当前对象(p1) 所指向的地址是否相等,相等返回true。
3.第27行代码 判断对象是否位空或者,传入的对象和当前对象的类是否相同,若判断结果为假,返回false
4.将传入对象o转化为当前对象类People,判断其name属性是否相等,相等则返回true,反之返回false

最终结果如下图所示:
在这里插入图片描述
此时,p1 p2的equals()判断结果为真,==判断结果则一直为false

模电专题-MOS管的放大电路分析 在实际应用中,我们经常会使用到功率MOS,这时通常不会将它当成一个开关使用,而是当成一个放大器来使用,那这就需要让其工作在放大状态。参考下图中的mos管的特性曲线,右图中的输出特性曲线中有一根红色的分界线,这个线就是区分mos管工作状态的分界线,在红线的左边,mos管工作在可变电阻区,也就是线性区;在红线的右边mos管工作在恒流区,也就是饱和区。当然,还有一个截止区。本文分析主要运用模电课本中的理论计算验证。 阅读详情

相关推荐

CST毫米波雷达ADAS仿真:从直角反射器到距离多普勒(RD图)的实战解析

本文通过CST Studio Suite实战解析毫米波汽车雷达ADAS仿真,详细演示了从构建直角反射器目标、参数化定义速度、进行参数扫描到生成距离多普勒图(RD图)的全过程。文章深入探讨了雷达关键参数(如距离分辨率、速度分辨率)的设计权衡与工程逻辑,并提供了单位统一、速度范围设定等实用避坑指南,帮助工程师高效完成雷达系统性能的前期验证与优化。

weixin_29292535的博客 502

面试-面向对象

一、若对一个类不重写,它的equals()方法是如何比较的? 答:比较的是对象的地址。 二、请你解释hashcode()和equals()方法有什么联系? 答:①相等的对象必须具有相等的哈希码; ②如果两个对象的hashcode相同,它们并不一定相同。 三、请解释java中的概念,什么是构造函数?什么是构造函数重载?什么是复制构造函数? 答:当新对象被创建的时候,构造函数会被调用。每一...

qq_41629684的博客 263

MySQL等保三级合规实践:如何安全配置root账户的本地与受信主机登录策略

本文详细介绍了MySQL在等保三级合规框架下如何安全配置root账户的本地与受信主机登录策略。通过分析root账户的特殊保护需求,提供三种安全加固方案,包括限制访问范围、限定登录IP和完全禁止远程登录,并指导创建安全的远程管理账户。文章还涵盖了密码策略强化、日志审计配置和网络层防护等关键合规要求,帮助用户实现MySQL的等保三级全面合规。

weixin_42522964的博客 260

equals和==的区别

== (1)如果比较的是基础数据类型,那么 == 比较的是他们的值是否相同 (2)如果比较的是引用数据类型,那么 == 比较的是他们的引用地址是否相同,也就是比较的栈中局部变量表里的 reference 引用是否相同。 equals (1)equals 是一个 Object 类中的方法,从源码可以知道,他比较的是两个对象的引用地址是否相 (2)但是其他类会重写 Object 类中的 equals 方法,重新定义比较的规则,像 String 中就重写了 equals 方法,他比较的是两个 String 对象的

qq_51339153的博客 505

地平线旭日X3派(RDK X3)从开箱到联网:新手避坑指南

本文为地平线旭日X3派(RDK X3)新手提供从开箱到联网的完整避坑指南。详细讲解了硬件识别、系统镜像烧录、串口调试(波特率921600)、有线/无线网络配置以及SSH/VNC远程访问等关键步骤,帮助开发者快速搭建稳定的开发环境,为后续AI应用部署扫清障碍。

weixin_29174385的博客 951

【AAAI2025】【小目标检测】FBRT-YOLO:更快速、更优的实时航拍图像检测方法

FBRT-YOLO是一种新型实时航拍图像检测方法,针对小目标检测的精度与效率平衡问题提出创新解决方案。该方法通过两个轻量级模块显著提升性能:特征互补映射模块(FCM)将浅层空间位置信息深度整合至网络深层,缓解信息失衡;多核感知单元(MKP)采用多尺度卷积增强多目标感知能力。实验表明,在VisDrone、UAVDT和AI-TOD数据集上,FBRT-YOLO在检测精度和速度方面均优于现有实时检测器,特别适用于资源受限的飞行设备。该模型通过精简网络结构,在保持高性能的同时降低了计算负担,为航拍实时检测提供了高效解

weixin_44184852的博客 2907

数组未重写equals方法,所以比较的是地址

即数组a指向a[0]的地址 重写数组的equals方法

m1234ilu的博客 640

5、癌症数据预处理技术与深度学习在癌症预测中的应用

本文详细介绍了癌症数据预处理技术和深度学习在癌症预测中的应用。针对CT扫描图像、X射线图像、超声图像、基因表达数据和文本数据等不同类型的癌症数据,分别阐述了去噪、插值、配准、归一化等预处理技术的具体方法。同时,分析了深度学习在乳腺癌、白血病和宫颈癌预测中的作用,结合相关影响因素探讨了模型的应用潜力。此外,还总结了深度学习在癌症预测中面临的挑战及未来发展方向,为癌症的早期诊断与精准预测提供了理论支持和技术参考。

alice7model的博客 123

==和equals的区别

关于equals这个方法,在String类中equals方法是被重写了的,所以比较值是否相同。并不是所有类的equals都是比较值,例如object类的equals方法和==是一样的。

fangzhu518的博客 606

图文:银行核心账务处理逻辑(白话篇)

银行账务系统分为对内账(记录银行自身资产负债)和对外账(处理客户交易),通过特定编码规则的账号体系进行管理。采用T型账户结构和凭证制度确保每笔交易可追溯,通过明细核算与综合核算双线并行、每日轧账核对(科目日结单、总账、日计表)实现账务精准平衡。从业务触发到最终账平的全流程体现了银行账务"分层记录、双向核对、闭环校验"的核心原则,保障资金流动的透明性与安全性。

银行信息系统应用架构详解 542

汽车UDS诊断详解及Vector相关工具链使用说明——总述

1.什么是诊断 车辆在运行过程中,不可避免地会发生一些故障,为了确保行车安全,我们要求车上的ECU能够实时监测部件的运行状态,一旦发现异常情况,能通过点亮报警灯等方式提示驾驶员。但是,点亮报警灯只能告诉驾驶员车辆发生了故障,最多只能定位到故障ECU,比如ABS报警灯亮说明ABS系统出现故障,但具体是什么部件发生故障并不能通过报警灯显示出来。这时就需要ECU在本地存储一个与故障相对应的故障代码,在进行维修的时候,可以通过车上的OBD接口连接诊断仪,把这个存储的故障代码读取出来,从而进一步定位到更加具体的故障部

weixin_42967006的博客 2万+

Java中==和equals()的区别

==和equals()最大的区别是:一个是运算符,一个是方法。 ==:如果比较的对象是基本数据类型,则比较数值是否相等;如果比较的是引用数据类型,则比较的是对象的地址是否相等。 equals():用来比较两个对象的内容是否相等。 注意: equals方法不能用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址。 ...

应无所住而生其心 3万+

高通Camx功能feature分析之一:remosaic功能导通

本文详细介绍了S5K3P9S传感器前置场景中SW Remosaic功能的实现流程。首先需在sensorxml中确认支持SW Remosaic类型,并集成remosaic相关库文件(libremosaic_wrapper.so等)。核心实现包括:初始化阶段调用InitFrontSamsungRemosaic();执行线程DeferFrontInitThread()读取校准数据;通过DoSamsungRemosaic()执行remosaic算法处理;最后在析构函数中调用DeinitFrontSamsungRem

1700

​Java中==和equals()的区别

在Java中,==和equals()用于比较操作,但它们的用途和行为有本质区别。==用于基本数据类型的值比较和引用类型的内存地址比较,而equals()默认比较内存地址,但可重写以比较内容。重写equals()时必须同时重写hashCode(),以确保哈希集合(如HashMap、HashSet)的正确行为。

weixin_74120671的博客 936

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

在JAVA中==和equals()的区别

编程是这样的,最开始看山是山,后来看山不是山,再后来我就不知道了,目前还在学习,欸嘿,好好学习吧各位,兴趣是最好的老师。

sh12123086的博客 869

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java基础:equals()方法与==的区别

euqals和==区别介绍

愿你我都能实现自己的梦想 1356

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java中equals()方法和==的区别

==有两种比较方式,比较基本类型的数值和比较引用类的地址。 equals()方法默认是以==来实现,我们也可以在平常的需求中重写equals()方法。

Cirmaster的博客 349

Java 中 == 与 equals() 的区别

Java中==与equals()的区别: ==用于基本类型比较值,引用类型比较内存地址 equals()是Object类方法,默认比较地址,但String/包装类等通过重写实现内容比较 关键区别:==判断"是否同一个对象",equals()判断"逻辑是否相等" 注意事项:字符串常量池、包装类缓存、equals与hashCode契约 实用建议:比较对象内容用equals(),基本类型用==,null安全比较推荐"常量.equals(变量)"

2303_77517907的博客 1062

Java面试-== 和 equals() 方法的区别与实现原理

但很多类(如StringIntegerList)都重写了equals(),让它比较内容而不是引用。equals()场景推荐做法原因比较基本类型使用==直接比较数值比较引用类型是否为同一对象使用==检查内存地址比较对象内容是否相等使用equals()逻辑相等性自定义类正确重写equals()和hashCode()确保在集合中正常工作比较字符串内容使用equals()安全、可靠字符串常量比较可用==(但不推荐)因为常量池,但行为不稳定性能敏感代码避免不必要的equals()

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

java中==和equals()的区别

java中==和equals()的区别 本人是个菜鸟小白,每天都在一点点学习,最近遇到这种问题,今天来讨论一下… 一、先来说说Java的基本数据类型和引用类型 Java中有八大基本数据类型:byte,short,int,long,double,folat,boolean,char 其中占1个字节的是byte,short和char占两个字节,int,float占四个字节,double和long占8个字节,boolean占1位,只有true和false,这八种数据变量中直接存储值 八大基本数据类型对应着各自的封

Zzz的博客 256

Java基础:==与equals()的区别

Java基础篇:详细讲述了Java中==和equals()的不同之处

PeaK欢迎大家评论留言,一起交流Java技术 7794

浅谈Java中==和equals()区别

Java基础浅谈Java中==和equals()区别== 运算符equals(): 方法 浅谈Java中==和equals()区别 == 运算符 可以使用在基本数据类型变量和引用数据类型变量中 如果比较的是基本数据类型变量,比较两个变量保存的数据是否相等(不一定要类型相同) 如果比较的是引用类型变量,比较的是两个变量的地址值是否相同,即两个引用是否指向同一个对象实体 equals(): 方法 只能适用于引用数据类型 在object中定义的equals()方法与==的作用是一样的,在String类中对e

klionl的博客 538

java中==和equals()区别

所以用==比较结果可能是false。比如:textview1和textview2的text都是1,但textview1.gettext()==textview2.gettext()值就为false.如果一边是实际值,如num==2,str=="aaa",效果跟equals()一样。equals()比较的是值。==比较的是值存储的地址。

kim5659的博客 294

Java中==和equals()的区别?

比较项==运算符equals()方法基本类型比较值不适用(只能用于对象)引用类型比较对象地址默认比较地址,但通常被重写为比较内容可否被重写❌ 不可重写✅ 可以重写(推荐对自定义类也进行重写)安全性无需担心空指针异常调用前应确保对象不为 null,否则抛出 NullPointerException常见用途判断是否是同一个对象判断两个对象的内容是否逻辑上相等equals()如果你自己写的类希望支持有意义的equals()重写方法。(推荐)同时重写hashCode()

weixin_61523952的博客 533

Java 中 == 和 equals() 的区别

的区别是 Java 面试常见考点,也是避免逻辑错误的关键!如果需要比较内容(如字符串、集合):用。一样(比较内存地址),但许多类(如。如果需要比较地址(如单例模式):用。可能指向同一对象(常量池)。(除非明确需要比较地址)。一致性:多次调用结果不变。类的方法,默认实现和。,用于比较两个变量的。

Littlegarbage_的博客 553
上一篇: centos安装jdk1.8
下一篇: Java 重写(Override)与重载(Overload)
M2L
M2L
博客等级 码龄10年 12粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值