==和equals()区别

AI赋能工业自动化:传感器大数据实战 工业自动化中AI与传感器大数据的结合,显著提升了生产效率与可靠性。关键技术包括实时数据处理、边缘计算和数字孪生,未来将进一步向自主决策系统演进。 阅读详情
分三种情况
第一 基本类型
第二 对象
第三 String字符串

前言:
Object的equals()的实现是比较引用地址
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆
内存),变量也占用一块内存,例如Object obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址.对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这
时候就需要用==操作符进行比较.
equals 方法是用于比较两个独立对象的内容是否相同

1.基本类型用==来比较值是否相同
比如 int a =5;
int b=5;
int c=6;
那么a==b就返回true, c==b就返回false

2.对象类型
如果一个类没有自己定义equals方法,那么它将继承Object 类的equals方法,Object类的equals方法
的实现代码如下:
boolean equals(Object o){
return this==o;}这说明,如果一个类没有自己定义equals 方法,它默认的equals 方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false

定义一个实体类为Emp
public classEmp {
String adress;
Long phoneNumber;
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
public Long getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(Long phoneNumber) {
this.phoneNumber = phoneNumber;
}
@Override
public String toString() {
return "Emp [adress=" + adress + ", phoneNumber=" + phoneNumber + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((adress == null) ? 0 : adress.hashCode());
result = prime * result
+ ((phoneNumber == null) ? 0 : phoneNumber.hashCode());
return result;
}
@Override
public booleanequals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Emp other = (Emp) obj;
if (adress == null) {
if (other.adress != null)
return false;
} else if (!adress.equals(other.adress))
return false;
if (phoneNumber == null) {
if (other.phoneNumber != null)
return false;
} else if (!phoneNumber.equals(other.phoneNumber))
return false;
return true;
}
}


验证:
对象调用equals()方法比较对象的内容时,对象需要重写hashCode() equals()方法
如果不重写,那么如下创建的对象e1 e2 equals()比较的结果是false

对象用==比较 比较的是内存地址 为false

很多时候我们需要比较的是两个对象的内容是否相同,所以调用equals()方法进行比较,就好比两个人进行比较,可以肯定的是这是两个不同的人(用==比较为false),但是这两个人的外貌穿衣打扮也就是(内容),是可以用equals进行比较的。
public static void main(String[] args) {
Emp e1 = new Emp();
e1.setAdress("上海市");
e1.setPhoneNumber(1855555555L);

Emp e2 = new Emp();
e2.setAdress("上海市");
e2.setPhoneNumber(1855555555L);
/**
* 当Emp重写了hashCode() equals()方法时 e1.equals(e2)才为true
* 否则为false
*/
System.out.println(e1.equals(e2));//true 比较的是对象内容
System.out.println(e1==e2);//这个始终为false,因为new Emp() 对象e1,e2分配的内存地址永远是不同的。
}

3.字符串
要注意两个方面:
第一:字符串常量池
第二:String字符串是默认重写了Object的equals()方法的
String a0 = "12345";
String a1 = "12345";
/**
* 直接声明String并赋值 常量池
*/
System.out.println(a0 == a1);// true
System.out.println(a0.equals(a1));// true
/**
* new String()并赋值属于新创建对象 String已经重写了equals()方法 == 比较地址为false
* equals比较对象的内容 true
*/
String a3 = new String("12138");
String a5 = new String("12138");
//new String()方式程序会在堆内存中开辟一片新空间存放新对象,同时会将”12138”字符串放常量池,相当于创建了两个对象 一个是a3 一个是“12138”
System.out.println(a3 == a5);// false
System.out.println(a3.equals(a5));// true
注意,项目中如果用到比较几个String字符串是否相等,多半是比较内容 所以要用equals()而不是==
补充说明下hashCode()方法:摘自网络
在一般的应用中你不需要了解hashcode的用法,但当你用到hashmap,hashset等集合类时要注意下hashcode。 

你想通过一个object的key来拿hashmap的value,hashmap的工作方法是, 
通过你传入的object的hashcode在内存中找地址, 
当找到这个地址后再通过equals方法来比较这个地址中的内容是否和你原来放进去的一样,一样就取出value。 

所以这里要匹配2部分,hashcode和equals 
但假如说你new一个object作为key去拿value是永远得不到结果的, 
因为每次new一个object,这个object的hashcode是永远不同的,所以我们要重写hashcode, 
你可以令你的hashcode是object中的一个恒量,这样永远可以通过你的object的hashcode来找到key的地址, 
然后你要重写你的equals方法,使内存中的内容也相等。


SPICE仿真软件:HSPICE_(22).HSPICE仿真案例分析 通过上述案例分析,我们可以看到HSPICE仿真软件在不同电路类型和仿真场景中的应用。无论是简单的直流分析、交流分析还是复杂的暂态分析,HSPICE都能提供详细的仿真结果,帮助我们更好地理解和优化电路设计。希望这些案例能够为读者提供实用的参考和指导,进一步提升使用HSPICE进行电路仿真的能力。输入文件的编写:确保输入文件格式正确,使用注释来解释每一部分的内容。分析类型的选择:根据电路的特点选择合适的分析类型,如.DC.AC和.TRAN。输出结果的设置:使用.print命令来指定需要输出的节点电压和支路电流。 阅读详情

相关推荐

华为海思2026届数字IC秋招笔试高频考点解析与实战技巧(2025最新版)

本文深入解析华为海思2026届数字IC秋招笔试的高频考点与实战技巧,涵盖时序优化、低功耗设计、DFT规则等核心模块。针对2025年最新真题,提供详细的解题思路和工程经验,帮助考生高效备考。特别关注SystemVerilog约束随机测试等新增考点,助力考生在秋招笔试中脱颖而出。

m2n3o4p5的博客 414

java中正确使用hashCode和equals方法

Java 中正确使用 hashCode 和 equals 方法 转载自:[开源中国社](http://www.oschina.net/question/82993_75533) 在这篇文章中,我将告诉大家我对hashCode和equals方法的理解。我将讨

图图 2570

Tesseral 建立地震模型

0. 前言 本节内容主要是总结如何使用 Tesseral 工具建立模型。 1. 模型建立步骤 设置模型的宽度和深度 此处默认都为1000,之后点击“确定” 建立地层 绘制新的地层 右键点击“New polygon” 绘制地层,设置第二个层的名字和纵波速度 绘制第三层,第三层覆盖在前一个层上 第四层如上,第四层如果是最后一层,绘制该层时,要将深度1000包围。 设置观测系统 设置炮点 设置子波为雷克子波,频率设置为30 检波点设置 运行模型 设置好如上选择后,

weixin_41857483的博客 6539

Equals和“==”的区别

"=="与equals的区别. 转帖地址:http://hujing1229.blog.ccidnet.com/blog-htm-itemid-198355-type-blog-do-showone-uid-60604.htmlpackage com.hj.equals; public class Test{ private int sid; private String name; pu

好好学习,天天代码 583

【工具使用】Keil常用的调试操作整理介绍

2、当选择了非0级优化时,调试可能会变得困难,具体表现在断点调试。该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的置。:如果是在C语言窗口中,则是按单条语句执行,与单步调试不同的是,遇到函数不会进入函数内部,而是直接全速运行函数,并跳到下一条语句。但我的Keil软件中无法显示这个视图,并且通过修改系统试图,调试时,点击打开系统视图发生了闪退的现象,目前能想到的原因是:重新安装Keil,安装最新版本。

MEYOU_Cc 不吃香菜! 1万+

Linux V3H 平台开发系列讲解(串行解串篇)2.2.2 MAX9296 MAX96705 GMSL1 续篇--串行器提前配置

本文详细介绍了在Linux v3h平台上,针对Max9296解串器和解串器max96705的详解配置,验证可出图,内容包括串行器解串器介绍、链路框架、硬件连接、速率配置,以及遇到的图像异常问题及解决方法。

xian18809311584的博客 537

equals()方法总结

在 java 中进行比较,我们需要根据比较的类型来选择合适的比较方式: 1)对象域,使用 equals 方法 。 2)类型安全的枚举,使用 equals 或== 。 3)可能为 null 的对象域 : 使用 == 和 equals 。 4)数组域 : 使用 Arrays.equals 。 5)除 float 和 double 外的原始数据类型 : 使用 == 。 6)floa...

hhdmw的博客 921

ruoyi-vue-pro集成magic-api(图文代码)

原先写过简单的集成:了解 magic-api的基本用法 附实战代码 magic-api相关文档推荐阅读:接口鉴权 相关的Java代码推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 【Java项目】实战CRUD的功能整理(持续更新)

码农研究僧的博客 7万+

HashSet 介绍, equals() 和hashcode()方法介绍

第一点,Set集合中是不允许有重复元素的, 第二点,Set集合中是无顺序的 第三点: * 为什么 add方法在添加String类型和普通的对象Person的时候结果不太一样,在它的帮助文档中是这样解释的 * //Adds the specified element to this set if it is not already present. More

请叫我王老魔 3282

2025年5月架构设计师论文真题回顾,附写作技巧、所涉知识点及参考范文(三)

本文主要回顾2025年上半年(2025-5-24)系统架构设计师考试下午论文的题目,同时附带写作技巧、所涉知识点及参考范文。试题三:多模型数据库及应用。

一几文的编程学习笔记。 629

YOLOv11改进策略【Neck】| SEAM:分离和增强注意模块,解决复杂场景下的小目标遮挡问题

本文记录的是利用 SEAM 模块优化 YOLOv11 的目标检测网络模型。的设计出发点在于解决复杂场景下的人脸遮挡问题,相当于是小目标被其他物体部分遮挡时,传统方法因特征缺失导致检测精度下降的问题。该模块通过增强未遮挡区域的特征响应并补偿被遮挡区域的信息损失,提升模型对遮挡小目标的检测能力。YOLO-FaceV2: A Scale and Occlusion Aware Face DetectorSEAM模块(Separated and Enhancement Attention Module)的设计出发点

Limiiiing的博客 2280

Java中==和equals()的区别

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

应无所住而生其心 3万+

倍福--手动加入第三方伺服的配置

客户在没有硬件情况下,希望手动配置硬件,添加第三方驱动器,本文介绍其操作流程 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 操作步骤 3 2.1. 添加电机XML文件 3 2.2. 创建EtherCAT 3 2.3. 添加新建项 3 2.4. 选择型号 4 2.5. 关联NC轴 5 软硬件版本 1.1. 倍福Beckhoff 1.1.1. 控制器硬件 TwinCAT控制制器,PC或者EPC,包括: 嵌入式控制器:CX5020-

weixin_41883890的博客 5325

==和equals()的区别

==和equals的区别(粗整合) 首先我们先来认识下==和equals的区别 ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同 ==是指对内存地址进行比较 , equals()是对字符串的内容进行比较 简单的概括来说: ==比较的是地址,equals()比较的是值 我们来认识下==方法(认识下java的内存机制) java把内存划分成两种,一种叫栈内存,一种是堆内存 栈的存取速度比堆快,速度仅次于位于CPU中的寄存器。但是栈中数据大小和生

qq_49180959的博客 1947

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

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

jre9下载 jdk9

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

==和equals()方法的区别

开发工具与关键技术:MyEclipse 10、Java jdk 作者: 撰写时间:2019年5月7日 在初学java的时候,我们很容易会把“和equals()”的意思很容易混淆。因为它们的意思都是比较是否相等。那么和equals()之间的区别在于哪里??如果我们不把这个弄清楚,那么就很容易出现一些低级的错误。那我今天带你了解了解==和equals()的区别在哪。 public class Fin...

weixin_43741599的博客 1895

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

== 和 equals() 的区别

比较维度==equals()类型操作符方法基本类型比较值不可用引用类型默认比较内存地址比较内存地址(同==)引用类型重写后仍比较内存地址比较自定义内容String比较是否同一对象比较字符串内容包装类(缓存内)可能true(同一对象)比较值包装类(缓存外)false(不同对象)比较值null处理为true应返回false性能O(1)可能O(n)集合中使用不适合必须正确实现最佳实践基本类型、枚举比较引用类型内容比较黄金法则:基本类型→ 用==引用类型比较引用→ 用==引用类型比较内容。

2301_78125917的博客 1306

visio安装包

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

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

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

weixin_74120671的博客 935

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

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

sh12123086的博客 869

equals()和==的区别

equals()和==的区别: 一、对象类型不同 1、equals():是超类Object中的方法。 2、==:是操作符。 二、比较的对象不同 1、equals():用来检测两个对象是否相等,即两个对象的内容是否相等。 2、==:用于比较引用和比较基本数据类型时具有不同的功能。 三、运行速度不同 1、equals():没有==运行速度快。 2、:运行速度比equals()快,因为只是比较引用。 四...

qq_45453185的博客 749

equals和==的区别_深入解析==与equals()区别

前言相信大家一定在很多地方多看到过==与equals()的区别,也把区别讲的很详细,每次记住了,很快又会变得模糊不清。这时就需要从原理深入剖析,一招制敌!认识==的用法在Java中,==的作用有两个(1).基础数据类型:比较的是两者的值是否相等,比如int,float,double变量。publicstaticvoidmain(String[]args){inta=1...

weixin_31080131的博客 123

equals()和==的区别

equals()和==的区别 1、Java中的基本类型: 八大基本类型:Byte(一个字节)、short(两个字节)、int(四个字节)、 long(八个字节)、double(八个字节)、folat(四个字节),boolean(只有trune和false), char(两个字节)、这八种数据变量直接存储值。 ​ 八种基本数据类型对应着各自的封装类型,提供了更多的方法,且不进行初始化时值默认为空(基本数据类型必须初始化)。 ​ 像String类型属于引用类型,变量中存储的是地址,对应的地址存储数据 2、e

weixin_43723844的博客 184

== 和 equals() 的区别

第四周== 和 equals() 的区别1. ==2.equals() == 和 equals() 的区别 1. == 关系运算符的一种,字面意思比较两者是否相同。深层次来看,我们使用的变量或常量类型划分为基本数据类型和引用数据类型。 基本数据类型:比较的是两者的值(int,float,char) 引用数据类型:标记的是两者的内存地址(String,对象) 2.equals() 由于经...

leno_scholar的博客 192

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的博客 255

Java 中 == 和 equals() 的区别

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

Littlegarbage_的博客 552

equals() 和 == 的区别

对于我们初入编程的小白来说,你可能有这样的疑问:equals()和 == 有什么区别呢?为什么有的时候,使用==或equals结果一样,但有的时候又不一样呢? 1.对于 == : (1)如果比较的两个变量是基本数据类型(Byte,short,int,long,double,float,boolean,char)的话,不管数据类型是否相同,值相等则为true。 int a = 10; double b = 10.0; float c = 10; char d = 'C'; char e = 67; b

qq_45568517的博客 495

equals() 和 ==的区别

equals()方法比较的是两个对象是否是相等(对象是否来自同类且值相等) ==分两种情况: 比较对象,比较的是对象在内存中的控件地址是否相等 比较基本类型,比较值是否相等 String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1.equals(str2)); Syst...

baidu_39503346的博客 196
上一篇: 基于SqlServer+hibernate的简单分页查询
下一篇: MyEclispe我的常用操作---持续更新。
黄三yeah
博客等级 码龄11年 28粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值