关于java中 == 和 equals 的详解

保姆级教程:手把手带你复现APFNet论文的RGBT目标跟踪模型(附完整代码与数据集配置) 本文提供了一份详细的APFNet论文复现指南,涵盖从环境搭建到模型测试的全流程。通过解析多模态融合模块和渐进式训练流程,帮助读者高效完成RGBT目标跟踪模型的复现工作,特别针对训练和测试中的常见问题提供实用解决方案。 阅读详情

关于这个问题我相信很多人都遇到过,首先说说==的用法,它属于比较运算符,结果是boolean类型的,如果是基本数据类型的话,比较的是==两边的值,如果是引用数据类型的话,比较的是引用变量指向的那个地址值。另外对于字符串你要用双引号引起来,如果是比较字符串的内容是否相同的话就用equals方法

equals本身是一个方法,它是根类Object里边的方法,所有类和接口都直接或者间接继承自Object,所以在所有的类中都有equals()方法,都是继承来的
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。
如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:
boolean equals(Object o){
return this==o;
}
这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。

java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
简单的用代码来验证下:
public class BiJiao {
public static void main(String[] args) {
String s1 = “Monday”;
String s2 = “Monday”;
if (s1 == s2){
System.out.println(“s1 == s2”);
}
else{
System.out.println(“s1 != s2”);
}
}
}
复制代码
编译并运行程序,输出:s1 == s2说明:s1 与 s2 引用同一个 String 对象

public static void method(){
String s1 = "Monday";
String s2 = new String("Monday");
    s2 = s2.intern();
    if (s1 == s2){
        System.out.println("s1 == s2");}
        else{
            System.out.println("s1 != s2");
            }
        if (s1.equals(s2)) {System.out.println("s1 equals s2");
        }
            else{
                System.out.println("s1 not equals s2");
                }
}

}
这次加入:s2 = s2.intern();
程序输出:
s1 == s2
s1 equals s2
原 来,(java.lang.String的intern()方法”abc”.intern()方法的返回值还是字符串”abc”,表面上看起来好像这个方 法没什么用处。但实际上,它做了个小动作:检查字符串池里是否存在”abc”这么一个字符串,如果存在,就返回池里的字符串;如果不存在,该方法把”abc”添加到字符串池中,然后再返回它的引用。)

14、多层螺旋 CT 技术详解 本文详细解析了多层螺旋CT(MSCT)技术的原理与应用,涵盖其相对于单层螺旋CT的优势,包括图像采集速度提升、分辨率提高和噪声降低。文章深入探讨了扫描仪的几何结构、离散投影模型以及关键参数如切片宽度和螺距的影响,并重点介绍了z-滤波重建算法及其离散实现流程。通过流程图和公式推导,系统梳理了从投影获取到图像重建的全过程。同时分析了MSCT在临床中的实际应用案例及未来发展趋势,如更高分辨率、更低辐射剂量和智能化算法等方向,全面展示了MSCT在现代医学影像中的核心价值。 阅读详情

相关推荐

M2DGR数据集在主流SLAM框架中的实战配置指南:从ORB-SLAM到FAST-LIO的完整流程

本文提供了M2DGR多传感器数据集在主流SLAM框架中的实战配置指南。详细介绍了从ORB-SLAM、VINS-Mono等视觉/视觉惯性框架,到A-LOAM、FAST-LIO等激光/激光惯性框架的完整配置流程、参数调整要点及常见问题解决方案。通过实际测试对比,分析了各算法在M2DGR数据集上的表现,为机器人定位与建图研究提供了宝贵的实战经验。

k9l0m1的博客 481

Java小题精炼训练营(篇九)

1、Java 语言中,负责并发管理的机制是( ) 垃圾回收 虚拟机 代码安全 多线程 选项A,Java语言中,垃圾回收机制对系统中不使用的内存进行回收,从而使程序员从繁忙的内存管理中解放出来。 选项B,Java编写好的程序首先由编译器转换为标准字节代码,然后由虚拟机执行。虚拟机把字节代码程序与各操作系统和硬件分开,使Java程序独立于平台。 选项C,Java的代码安全检测体现在多个层次上,在编译层、解释层、平台层分别作不同的安全检查。 选项D,多线程是Java程序的并发机制,它能同步共享

耀的博客 862

游程理论提取灾害事件特征V2---基于MATLAB语言的编程实现

游程理论,灾害事件,MATLAB

EWBA_GIS_RS_ER的博客 3794

实例化方法重写

package com.test.demo1; import java.util.HashMap; import java.util.Map; public class Test { public static void main(String[] args) { Object o = new Object() { @Override public boolean equals(Object obj) { .

GET知识不迷路,点赞评论加关注! 723

CentOS7全隔离环境部署Nvidia Tesla A100 40G驱动与CUDA工具包实战

本文详细介绍了在CentOS7全隔离环境下部署Nvidia Tesla A100 40G显卡驱动与CUDA工具包的实战经验。通过构建本地YUM仓库、解决驱动依赖问题以及三重验证法,确保Tesla A100与CUDA 11.7的完美兼容。同时分享了Anaconda3离线部署技巧,帮助用户在隔离环境中高效搭建Python GPU开发环境。

weixin_27215337的博客 401

2026年大数据开发工程师常见面试选择题

大数据面试高频考点解析 摘要:本文汇总了30道大数据开发面试高频题目,涵盖Hadoop生态、Spark、Flink、Kafka等核心组件。重点包括:1)HDFS架构与特性(5V特征、副本机制);2)MapReduce/Spark原理(Shuffle过程、RDD抽象);3)实时计算(Kafka消费组、Flink Watermark);4)数据仓库设计(分层模型、性能优化)。特别强调数据倾斜、小文件问题等实战场景的解决方案,以及从日志、资源等多维度排查任务异常的方法。掌握这些基础原理和典型问题应对策略,是应对大

不务正业的猿 450

关于 equalsIgnoreCase() 和equals()介绍

equals(): 在录入 String 类型的判断时,if ()判断需要使用  equals()进行判断是否等于您需要的数字 写法    if(输入数据.equals("被等于的字符串"))  使用这个代码,可以等同于整数平时类型的 == Scanner sc=new Scanner(System.in); String input =sc.next(); if(input.equ

xcom2004的博客 1198

Vue - 简约大气 404 页面

效果图 实现代码 复制即可。 <template> <div> <div class="error"> <!-- 图片可保存到本地 --> <img src="https://img-blog.csdnimg.cn/20210715111039922.png"> <p>抱歉!你访问的页面不存在或已删除 :( </p> <span class="back" @click="go(

🏆 前端领域优质创作者 3371

Java疑难知识分析:==与equals()的区别详解

Java编程语言是目前世界范围内使用率最高的编程语言,它是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,同时也摒弃了C++里面难易理解的多继承和指针等概念,但是相对其他部分编程语言来看,Java的学习有不少疑难知识点。这里就为大家分析一下“==”与“equals()”的区别。 单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚 “”操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两

qf2019的博客 176

07RK3568 I2S主模式 FPGA

RK3568与fpga通过i2s0连接,fpga连接音频芯片ES8388,RK为i2s主模式。调试时发现可正常采集来自fpga的数据。不可发送数据至fpga。由于i2s后连接fpga这里用了Rockchip的dummy-codec,一个虚拟的编解码器。

qq_39451352的博客 303

【异常】Cursor 模型服务地域访问限制报错的完整排查与解决方案This model provider doesn‘t serve your region

其本质是:Cursor客户端依赖的上游大语言模型服务提供商,基于自身服务的合规运营范围,对客户端发起的请求进行了来源地域权限校验;当系统检测到请求的网络来源地域,不在该模型服务商官方授权提供服务的地域范围内时,会触发服务访问拦截策略,拒绝响应本次模型调用请求,最终在客户端抛出该报错。合规声明:本文所提供的所有方案,均仅用于技术问题排查与解决,请您在使用过程中严格遵守当地法律法规,以及对应软件与模型服务提供商的用户协议与合规要求。更多关于AI+教育领域的干货,可以关注我的微信公众号一时间获取哦~

奶爸的编程之路,也就一周冷个三天 1134

"=="和equals方法的区别

1)对于==,比较的是值是否相等 如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址 2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象 如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址; 诸如String、Dat...

weixin_45870092的博客 218

visio安装包

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

一文详解java中的==和equals()

一文详解==运算符和equals()方法

卓越之识论道,平常之识论事,狭隘之识论人 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java中的==和equals详解

文章目录三个例子1.==和equals用于String对象的比较2.==和equals用于Object对象的比较3.==和equals用于自定义对象的比较==和equals的本质区别1.==比较的永远是地址2.equals本质上也比较的是地址,但是有些类重写了equals方法,达到比较对象内容的目的3.分析==在比较基本数据类型的时候也是在比较地址吗? 三个例子 1.==和equals用于Stri...

超级无敌小胖头 2021

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java 中 == 与 equals() 详解

在 Java 中,== 和 equals() 是用于比较两个变量是否相等的两种方式,但它们的行为和适用场景有所不同。== 用于比较基本数据类型的值或引用类型的内存地址,而 equals() 用于比较对象的内容是否逻辑相等,通常需要重写该方法。字符串、包装类和自定义对象的比较中,== 和 equals() 的结果可能不同,尤其是在处理字符串常量池、自动装箱缓存和数组时。为了避免常见的错误,建议在比较对象时优先使用 equals(),并在自定义类中正确重写 equals() 和 hashCode() 方法。此外

LiuYaoheng的博客 1330

java中的==和equals详解

1. equals equals比较的时候如果是引用类型(除了String类型),那么使用的是object中的equals方法,比较的是地址是否一样;如果是String类型的对象,那么String类重写了Object中的equals方法,比较的是内容是否一样; 2. == ==比较的是地址,引用类型(除了String类型)的时候,只要不是同一个对象那么不是一个地址,String类型的时候如果new出来两个对象,那么也是不同地址,如果不new,那么就是同一个地址,因为都是存放在字符串常量池中,如果是基本数据类

Jiao的博客 9795

java中equals和‘==’的详解

"==" 一般用于基本数据类型,它比较的是两者的值,而对于引用数据类型,"=="比较的却是两个引用 (即栈中的内容),而引用类型正真的值是放在堆中的(即new出来的对象),euqals()比较的才是堆中的值。 一、引用数据类型 看一下Object中的equals();方法: public boolean equals(Object obj) { return (this ...

_好人的博客 575

详解Java中equals和==的区别

Java中equals和==的区别(详细概述) 详细结论 == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。基本数据类型中比较的是值是否相等。 equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而...

Touch 2597

java中equals和==详解

首先需要了解,java中的数据类型分为基本数据类型和引用数据类型,基本数据类型有byte,short,int,long,float,double,char,boolean,除了这8中基本数据类型剩下的都是引用数据类型.        基本数据类型的存储原理:所有的基本数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面.引用数据类型的存储原

fly_zhyu的博客 496

详解java中equals和== 的区别

先看一段代码:String test1 = "add"; String test2 = "add"; String test3 = new String("add"); String test4 = new String("add"); System.out.println(test1 == test2); System.out.println(test1.equals(test2)); Sy

梦想起飞的地方,必须用心去经营 3110

Java中equals和==详解

目录: 1、==作用 2、equals作用 3、小结 1、==作用 ==是判断两个操作数是否相等。 如果操作符两侧都是基本数据类型,比如是java中的8中基本数据类型byte,short,int,long,char,float,double和boolean之一的话,则比较的是数值是否相等。 如果操作符两侧是引用类型(类)的话...

wangqsse的博客 314

java == equals hashcode 详解

A.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同,就是比较对象中所存的地址即只想栈中的值得地址是否相同    java  基本类型 :一个数字,一个字符或一个布尔值 (基本类型没有equals方法)    java  引用类型 : 是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示

小程序 1万+

Java中==和equals()的区别【详解】

目录 一、Java中==和equals()的区别 1、前述 2、数据到底存在哪 在方法中声明的变量: 在类中声明的变量: 3、“==”与equals() 相同点: 不同点: Object类中的equals(): 4、String类的equals() 源代码及解析: 5、String类的特殊性 代码演示: 运行结果: 说明: “”和new关键字创建字符串的区别: 关于toString()方法的说明: 6、手动定制equals()方法 代码及解析: 说明: 一、Java

訾博(ZiBo)的博客 3499

Java中equals和==的区别详解

平时在学Android和Java语言的时候,总是碰到“equals”和“==”这两个字符,老感觉差不多;其实还是有一些区别的,今天干脆把它们彻底弄清楚。 一、java当中的数据类型和“==”的含义: 基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号==,比较的是他们的值。 引用数据类型:当他们...

baidu_26315231的博客 327
上一篇: 正则表达式详解,用好会使我们的编程效率事半功倍哦 !
下一篇: String类中Split方法的用法
frede007
博客等级 码龄11年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值