面试题 之(==和 equals的比较)

详解“==”和equals的区别 详解“==”和equals的区别一、“==”二、equals()三、栗子和解释说明3.1栗子3.2基本数据类型的比较3.3引用数据类型的比较3.3.1String类3.3.2未重写equals方法的类四、练手栗子 “==”和equals 最大的区别是 “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。 equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。 一、“==” “==”是运算符 ①如果比较的对象是 阅读详情

1、==   可以去判断基本数据类型,也可以判断引用类型。

2、==  如果判断基本类型,判断的是值是否相等。

3、如果判断引用数据类型,判断的是地址是否相等,即判断是否是一个对象。

4、只要有基本数据类型,那么判断的就是值是否相等。


1、equals  是Object类中的方法,只能判断能引用类型

2、默认判断地址是否相等,子类中往往重写该方法,用于判断内容是否相等。

        怎么理解呢,由于Object是所有类的基类,也就是说一个类无指定的继承对象时候,是默认继承Object类的,所以若子类没有重写equals方法时,是默认比较两个地址是否相等的。

        但是一般情况下,我们会重写equals方法,比如String Integer等类,因此这比较的是值(内容)是否相等了。

注:怎么看equals的原码:    ctrl  + B

        重写是对父类的方法进行改进,子类还需要使用改进后的方法。

来重写一个equals方法:(判断连个对象的类容是否相等)

public class Test {
    public static void main(String[] args) {
        Persion persion0 = new Persion("王明", 24, '男');
        Persion persion1 = new Persion("王明", 24, '男');
        System.out.println(persion0.equals(persion1));
    }

}

class Persion {
    //默认继承Objects类,而默认的equals类是比较两个对象的地址的。
    private String name;
    private int age;
    private char gender;

    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj instanceof Persion) {
            //向下转型,因为我想得到子类的私有属性,私有方法一样要向下转型啊。
            Persion p = (Persion)obj;
            return this.age == p.age && this.gender == p.gender && (this.name).equals(p.name);
        }
        return false;

    }

    public Persion(String name, int age, char gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }
}


字符串在调用equals 的时候,首先要看下是否所示字符串,如果不是的话,就直接返回false。最后的属性值 也不用再比较了。

 String的equals 源码在这里

 



sb 是没有equals 方法的。

默认使用的是顶级父类的equals 方法,比较的是地址值。

s是在串池中,sb 是在堆中,怎么能是一个地址呢? 

【翻译】 使用 equals 函数比较 Map 值返回 false,即使值和插入顺序相同 我最初假设这可能是因为 HashMap 不保留插入顺序。但是当我用两个 LinkedHashMap 对象进行相同的比较时,其中确实保留了插入顺序,equals() 方法仍然返回 false。 阅读详情

相关推荐

创客学院嵌入式驱动开发——学习资料汇总

1.创客学院知识巩固-01C语言回顾_C/C++_Set_Mode的博客-优快云博客https://blog.youkuaiyun.com/Set_Mode/article/details/94431050 2.创客学院知识巩固-02数据结构_Set_Mode的博客-优快云博客https://blog.youkuaiyun.com/Set_Mode/article/details/94431087 3.创客学院知...

snaking616 5116

Java中的equals方法详解:比较方法

如果不覆盖equals方法,则调用该方法时会使用继承的Object类的实现,这种默认实现无法提供正确的比较行为,因为它无法知道哪些属性或状态在两个对象中是必须相同的。在这个例子中,a和b是两个不同的Integer对象,虽然它们的值相同,但是它们指向的是不同的对象,因此使用==运算符比较时返回false。3)传递性:对于任何非null的引用值x、y和z,如果x.equals(y)返回true,y.equals(z)也返回true,那么x.equals(z)也应该返回true;

weixin_62458944的博客 1万+

中兴畅行60 ZTE 7552N 深度改造指南:从解锁BL到Magisk Root与IMEI硬改全流程

本文详细介绍了中兴畅行60(ZTE 7552N)的深度改造全流程,包括解锁BL、刷入Magisk获取Root权限以及IMEI硬改等关键步骤。通过专业的操作指南和实用技巧,帮助用户安全完成设备改造,同时提醒注意法律风险和技术难点。

weixin_33670786的博客 1895

equals方法深入解析

写在前面 最初接触java的时候,都会有涉及equals和==的区别,最经典的案例就是用String类型的数据作类比。最常见的说法就是:equals比较的是值,==比较的是引用地址。 首先这种说法是错误的,也有人认为这种说法是不完全正确的(至少对于String这个类来说这种说法是没问题的)。 之所以说这种说法是错误的,是因为本人真的觉得这个总结实在是误人子弟。 1、equals和== 1.1、...

wendyyanan的专栏 2327

Altera Cyclone4 EP4CE15F17C8核心板硬件设计避坑指南(附AD09工程文件)

本文深入解析Altera Cyclone4 EP4CE15F17C8核心板硬件设计中的关键问题与解决方案,涵盖电源架构优化、信号完整性处理、热设计及生产调试要点。特别提供经过验证的AD09工程文件,帮助开发者规避常见设计陷阱,提升FPGA项目的成功率与可靠性。

weixin_29159441的博客 297

2026 具身智能 VLA/WAM 全栈学习与训练路线:从动作建模、SFT、RL 到世界模型的 RTX PRO 6000 96GB 单卡实战指南

我会把这张表做成“”而不是只列论文名:先核对每个模型截至的公开代码、训练目标和数据接口,再单独给你一套。对于没有公开、只有推理代码或训练细节不完整的模型,我会明确标出来,避免把“论文里提到”误写成“可复现”。目前有一个重要更新:。截至今天 NVIDIA 官方开源主线已经是换成 Cosmos-Reason2-2B/Qwen3-VL 架构,动作端仍是连续路线,而且官方明确给出单卡微调时默认只训练,峰值显存约。所以你的 96GB 单卡对 GR00T SFT 非常宽裕。可以。下面我按,把它整理成一张真正面向“

u013250861的博客 444

equals和==的区别

浅谈Java中的equals和== (本文为转载学习,以防丢失。) 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 4 System.out.println(str1==str2); 5 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一样?和equals方法之间的区别是什么?如

sheep_Code的博客 647

WordPress插件depicter存在SQL注入漏洞(CVE-2025-2011)

Depicter 是一款功能强大的 WordPress 幻灯片插件,允许用户通过直观的拖放编辑器轻松创建响应式滑块、轮播和动态内容展示。该插件提供丰富的模板库、动画效果和图层控制,支持多媒体内容嵌入(如图片、视频、HTML),并优化了移动端显示和SEO性能。其无代码操作界面适合非技术用户,同时提供高级自定义选项,适用于产品展示、营销推广和视觉叙事等多种场景,是提升网站视觉吸引力的高效工具。

m0_50125527的博客 551

==和equals的区别

1、 ==可以比较基本数据类型和引用数据类型,而equals只能比较引用数据类型。 2、 在比较String类型时,是比较两个对象的内存地址是否一致,是则返回true,否则返回false,使用equals是比较两个对象指向的内存地址中的内容是否一致,是则返回true,否则返回false。 3、 在比较其他引用数据类型时,当其重写了equals方法时,用户可以在重写的equals方法中自定义比较规则判断两个对象是否相等,比如两个学生对象的学号相等则判断这两个学生对象相等,返回true,当其没有重写equals

qq_44282622的博客 586

Open3D 基于法线的双边滤波

基于法线的双边滤波是一种用于点云平滑的技术,它结合了点与其邻域点之间的几何距离和法线方向的相似性,从而在去除噪声的同时保留几何特征。这种滤波方法广泛应用于点云处理领域,尤其是在需要保留表面细节和边缘的场景中。

纵马踏花向自由 2500

用 RFC Destination 打通 VS Code 与 ABAP 后端,ABAP 开发连接不只是登录那么简单

本文重点介绍了在VS Code中配置ABAP开发环境时建立RFC destination连接的关键细节。文章指出:1. RFC destination是连接前端开发工具与ABAP后端的核心配置,包含系统类型、客户端、用户名等关键信息;2. 连接方式的选择(RFC/HTTP)由产品形态决定,On-Premise和Private Edition使用RFC,而BTP和Public Cloud使用HTTP;3. 连接创建后需要通过添加工作区文件夹来展示开发对象;4. RFC连接涉及网络可达性、身份认证和开发权限三个

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 211

最新【Java 基础语法】万字解析 Java 的 String 类,分布式技术面试大厂真题30讲

看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面小编专门为你量身定制了一套针对知识面不够,也莫慌!还有一整套的,可以瞬间查漏补缺全都是一丢一丢的收集整理纯手打出来的。

2401_84585372的博客 450

【个人成长笔记】在Ubuntu中安装RTL8188GU USB无线网卡驱动(Driver for Linux RTL8188GU)

这篇笔记提供了在Ubuntu系统中安装RTL8188GU无线网卡驱动的完整指南。主要内容包括:驱动程序的官方来源(Github链接)、详细安装步骤(通过git下载、编译安装等命令),以及将设备转换为USB网卡模式的关键指令。特别提醒每次开机都需要执行模式转换命令,因为设备默认会以U盘模式启动。文章以简洁的技术文档形式呈现,适合Linux用户快速查阅和操作。

yuhuasheng1997的博客 1826

【JavaSE】String类型

【JavaSE】String 类型

qq_41233305的博客 2032

jre9下载 jdk9

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

廖雪峰Python教程[完整版]

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

【java】Interger 比较相等与否(==与equals的区别)

【java】Interger 比较相等与否

qq_43471945的博客 1488

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

== 和 equals 的区别

== 和 equals 的区别是什么? 使用 == 比较 Java中的8种基本数据类型(byte,short,char,int,long,float,double,boolean)比较他们之间的值是否相等。 引用数据类型,比较的是他们在堆内存地址是否相等。每新new一个引用类型的对象,会重新分配堆内存空间,使用==比较返回false。 使用 equals 比较 equals方法是...

ConstXiong 6万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

面试题—————— equals和== 的区别

面试官:说说equals和== 的区别? 对于 == 来说: 如果比较的是基本数据类型变量,比较两个变量的值是否相等。(不一定数据类型相同) 如果比较的是引用数据类型变量,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体。 测试基本数据类型: int a = 20; int a = 20; double c = 20.0; char i = 20; char j = 'A'; boolean boo = tru

趁年轻不如拼一拼 2万+

面试题 equals和==的区别?

equals和==的区别? 问这个可以说是老生常谈了 在java中,equals和 == ** 的最大区别就是 (==)他是运算符**,当然,你又会说他们不都有比较值的作用啊,做笔试题经常考 具体情况是下面这些 java中的基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。 当使用==来判断两个变量是否相等的时候,如果两个变量是基本类型变量,且都是数值类型,则只要两个变量

wangzhenxing991026的博客 1万+

java面试题之equals和==的区别

equals和==的区别 这已经是一个老生常谈的话题了,最近有工作了三四年的朋友去面试,面试官还是问到了这个问题,这好像已经成为java基础部分必问的一个问题了,在这里我也结合了网上的一些细节,谈谈自己的看法。 首先来看一下实例 运行结果如下 我们再来看看这个 运行结果如下 可以看到s1和s2打印出来的值是一样的,但是"=="比较返回的结果却是false,而equals返回的结果却是true,这是因为双等号比较的其实是地址值。 解析 "=="比较的解析 在编译String s1=“song"的时候其

好想去买菜的博客 2万+

面试题中的equals

import com.designmode.*; /** * @author honor:总结面试题中的equals * ==对基本类型来说比较的是值,对引用类型来说比较的是地址 * equals对于重写了equals方法的类来说比较的是定义的内容,比如说String,比较的是值 * 对于未重写equals方法的类来说,其继承Object类里面的equals方法,原型还是==比较...

莘栀的博客 379

【Java面试题】说说hashCode() 和 equals() 之间的关系?

上一篇关于介绍时,提到equals()和hashCode()方法可能引出关于的面试题,本篇来解析一下这道基础面试题。先祭一张图,可以思考一下为什么?equals()的作用是用来判断两个对象是否相等。hashCode()的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。我们以“类的用途”来将“hashCode() 和 equals()的关系”分2种情况来说明。

2301_77690238的博客 817

hashCode与equals 通过面试题一窥究竟

面试题: public class User { private String id; public User(String id) { this.id = id; } @Override public boolean equals(Object o) { if (this == o) { return...

weixin_33736048的博客 152

面试题系列第1篇:说说==和equals的区别?你的回答可能是错误的

最近准备再刷刷面试题,将面试题中比较经典和核心的内容写成系列文章发表在公众号中,巩固基础知识,分享给大家,欢迎大家持续关注【程序新视界】。下面是本系列第1篇。 大多数面试的第一题不是让说说面向对象,就是关于字符的。本篇文章就从各方面来聊聊“==和equals的区别”。 概念上的区别 针对字符串(注意仅限字符串)的比较,==和equals的区别有以下两点: (1)"=="是判断两个变量或实例是不是指向同一个内存空间。 (2)"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。 单纯从抽象的概念

程序新视界 1578

Java面试题:说说==和equals的区别?你的回答可能是错误的

String除了通过new的形式进行定义,还可以通过等号赋值的形式:代码语言:javascript代码运行次数:0运行AI代码解释String str = "程序新视界";这是一种非常特殊的形式,不需要new就可以产生对象,和new有本质的区别。这种形式的赋值在java中叫直接量,它是存在于常量池中,而不是像new一样存放在堆中。当声明这样一个字符串时,JVM会在常量池中先查找有没有对应值的对象。如果有,把它赋给当前引用,即原来的引用和现在的引用指向了同一对象。

weixin_62421895的博客 874

Java对象比较:==与equals()的深度解析

在Java编程中,对象比较是基础但关键的操作,涉及引用比较与内容比较两种机制。==运算符用于比较基本数据类型的值或对象的引用地址,而equals()方法则用于比较对象的内容逻辑相等性。理解这两种比较方式的区别对于避免常见编程错误至关重要,特别是在处理字符串、集合框架和自定义对象时。从JVM实现层面看,==直接比较栈顶引用,性能更高;而equals()作为方法调用更灵活但开销略大。实际开发中,正确使用比较机制能提升代码健壮性,如在哈希集合操作时必须保持equals()与hashCode()的一致性。掌握这些核

weixin_34327223的博客 365

Java面试题之:== 和 equals 的区别是什么?

Java面试题之:== 和 equals 的区别是什么一、== 和 equals 的区别是什么?① == 解析② equals 解析总结 一、== 和 equals 的区别是什么? ① == 解析   首先对于基本类型和引用类型 == 的作用效果是不同的,如下所示:    1.基本类型:比较的是值是否相同;    2.引用类型:比较的是引用是否相同;   代码示例: public class Demo { public static void main(String[] args) {

faramita_of_mine的博客 605
上一篇: 多态数组1
下一篇: toString
atitude
博客等级 码龄7年 10粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值