Java中的equals和==

艾德克斯电子负载IT8510维修 2年前从朋友那收了这台艾德克斯电子负载,收来的时候上面的编码器就不好用,就是旋转的时候一会增加一会减小这种现象,不过其他功能都是正常的,自己也就将就用这。直到昨天,电子负载开机发现空载的时候电压不是0,开始有mV级的跳动,心想这个不正常。又测试了一下恒流功能,已经不能正常工作了。 阅读详情

  1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

    如果作用于引用类型的变量,则比较的是所指向的对象的地址

  2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量

    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

    诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

二. == 比较的又是什么?

例子:

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int n=3;
        int m=3;

        System.out.println(n==m);

        String str = new String("hello");
        String str1 = new String("hello");
        String str2 = new String("hello");

        System.out.println(str1==str2);

        str1 = str;
        str2 = str;
        System.out.println(str1==str2);
    }

}

 输出结果为 true false true

n==m结果为true,这个很容易理解,变量n和变量m存储的值都为3,肯定是相等的。而为什么str1和str2两次比较的结果不同?要理解这个其实只需要理解基本数据类型变量和非基本数据类型变量的区别。

  在Java中游8种基本数据类型:

  浮点型:float(4 byte), double(8 byte)

  整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte)

  字符型: char(2 byte)

  布尔型: boolean(JVM规范没有明确规定其所占的空间大小,仅规定其只能够取字面值”true”和”false”)

  对于这8种基本数据类型的变量,变量直接存储的是“值”,因此在用关系操作符==来进行比较时,比较的就是 “值” 本身。要注意浮点型和整型都是有符号类型的,而char是无符号类型的(char类型取值范围为0~2^16-1).

  也就是说比如:

  int n=3;

  int m=3; 

  变量n和变量m都是直接存储的”3”这个数值,所以用==比较的时候结果是true。

  而对于非基本数据类型的变量,在一些书籍中称作为 引用类型的变量。比如上面的str1就是引用类型的变量,引用类型的变量存储的并不是 “值”本身,而是于其关联的对象在内存中的地址。比如下面这行代码:

  String str1;

  这句话声明了一个引用类型的变量,此时它并没有和任何对象关联。

  而 通过new String(“hello”)来产生一个对象(也称作为类String的一个实例),并将这个对象和str1进行绑定:

  str1= new String(“hello”);

  那么str1指向了一个对象(很多地方也把str1称作为对象的引用),此时变量str1中存储的是它指向的对象在内存中的存储地址,并不是“值”本身,也就是说并不是直接存储的字符串”hello”。这里面的引用和C/C++中的指针很类似。

  因此在用==对str1和str2进行第一次比较时,得到的结果是false。因此它们分别指向的是不同的对象,也就是说它们实际存储的内存地址不同。

  而在第二次比较时,都让str1和str2指向了str指向的对象,那么得到的结果毫无疑问是true。

二.equals比较的又是什么?

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String str1 = new String("hello");
        String str2 = new String("hello");

        System.out.println(str1.equals(str2));
    }
}

输出为true

可以看出,String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等。

  其他的一些类诸如Double,Date,Integer等,都对equals方法进行了重写用来比较指向的对象所存储的内容是否相等。

基于ESP32和OV5640的目标检测系统 本文详细介绍了基于ESP32-S3和OV5640摄像头构建目标检测系统的完整方案。系统采用YOLOv8-Nano轻量级模型,通过INT8量化实现边缘部署,在UXGA分辨率下达到25fps帧率。文章从硬件选型、图像采集优化、模型量化部署、实时推理流水线构建等维度展开,重点解决了内存管理、电源稳定性和异常处理等嵌入式系统关键问题。该方案在资源受限条件下实现了150ms以内的端到端延迟,为物联网视觉应用提供了低成本、低功耗的解决方案,适用于智能家居、工业检测等多个场景。 阅读详情

相关推荐

miniDP与DP管脚定义差异详解及设计避坑指南

本文详细解析了Mini DisplayPort与标准DisplayPort接口在管脚定义上的核心差异,通过对比表格直观展示了两者20针脚的不同排列方式,特别是高速差分信号线的分布。文章结合真实设计案例,为硬件工程师提供了从原理图设计、PCB布局到信号完整性考量及故障排查的完整避坑指南,强调绝不能将两者视为简单的物理缩小版。

weixin_29248653的博客 362

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万+

ESXI 8.0.3 ubuntu 24.04 直通显卡P40

手把手,一步步教你直通GPU,ESXI 8.0.3 ubuntu 24.04 直通显卡P40

qq_36433118的博客 4683

Java中equals详解

equals是在object类中的方法,在object中equals是用来看看两个参数是否引用的是同一个对象 例: obj.equals(obj2) 若是返回true说明两者引用同一个对象 源码: public boolean equals(Object obj) { return (this == obj); } 但是在我们实际开发中经常比较的是两个对象的内容是否相等,因此就要重写equals,注意只能是一个类里比 public boolean equals(Obj

qq_60267580的博客 2万+

EEGNet 网络代码解析与实战复现指南

本文详细解析了EEGNet这一轻量级卷积神经网络的结构与设计思想,重点阐述了其利用深度可分离卷积高效处理脑电信号的原理。文章提供了基于PyTorch的完整代码复现指南,包括网络搭建、数据模拟、训练调试及关键参数解析,旨在帮助读者掌握EEGNet的代码复现技巧,并将其应用于脑机接口等实际场景。

honey的博客 532

从零开始理解二极管限幅:5种典型电路设计及实际应用场景解析

本文系统解析了二极管限幅电路的五大经典拓扑,包括串联与并联型上下限幅及双向限幅。通过剖析其核心原理与二极管的单向导电性、正向压降特性,结合ADC输入保护、电源管理、音频处理等实际应用场景,提供了从器件选型到设计陷阱规避的完整实战指南,帮助工程师为信号构建可靠的“安全笼”。

2y3u4i5o6p的博客 1034

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

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

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

普源精电DHO系列示波器选购指南:从学生党到工程师的完整对比

本文深入评测普源精电DHO系列示波器,从DHO800到DHO4000各型号的核心参数、功能特点及适用场景进行全面对比,帮助学生党和工程师根据实际需求选择最佳型号。重点分析带宽、采样率、存储深度等关键指标,并提供实用的选购建议和进阶使用技巧,帮助用户充分发挥示波器性能。

weixin_30485379的博客 167

Java中的equals方法

解释:this指的就是当前对象,this是指equals方法是谁调用的,上面的hello调用的equals,所以this指的是字符串hello,而==右边的obj对象,是传入的abc。Object类中的equals方法默认就是比较对象地址是否相同。"=="是一个比较运算符。

SakuraMG的博客 1万+

使用curl命令出现fatal: unable to access ‘https://github.com/nvm-sh/nvm.git/‘: Encountered end of file的解决方案

本文主要介绍了使用curl命令出现fatal: unable to access ‘https://github.com/nvm-sh/nvm.git/’: Encountered end of file的解决方案,希望能对使用curl命令的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

在Simulink中搭建一个基于IoT设备间通信协议栈的仿真模型

物联网(IoT)设备间的通信协议栈仿真对于理解不同层级的协议如何协同工作,以及优化网络性能至关重要。通过Simulink结合MATLAB的强大功能,我们可以模拟和分析从物理层到应用层的完整通信过程。下面详细介绍如何使用Simulink进行IoT设备间通信协议栈的仿真。

amy_mhd的博客 156

【Java】equals() 方法详解

equals方法详解

威威的博客 1万+

使用 MATLAB/Simulink 构建一个基于PID控制的直流电机速度调节系统模型

直流电机(DC Motor)因其结构简单、成本低廉、易于控制等特点,广泛应用于各种工业自动化和家用电器中。PID控制器作为最常用的控制策略之一,在直流电机的速度调节系统中具有重要应用价值。通过合理调整比例(P)、积分(I)、微分(D)三个参数,可以实现对电机速度的精确控制。本教程将带你使用构建一个基于PID控制的直流电机速度调节系统模型,涵盖电机模型构建、PID控制器设计、系统仿真与调试等多个方面。本文介绍了如何使用构建一个基于PID控制的直流电机速度调节系统模型。

amy_mhd的博客 217

Java中==和equals()的区别

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

应无所住而生其心 3万+

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

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

在Java学习和面试中经常遇到这个问题,虽然想着简单,但还是决定记录下来,毕竟菜嘛...... ==: ==是直接比较的两个对象的堆内存地址,如果相等,则说明这两个引用实际是指向同一个对象地址的。但是我们又常常碰到这样一个问题 最终结果是true,true,那既然==是比较的地址,那么int数据的地址是怎样的呢,String又是怎样的呢? 对于基本数据类型(byte,short,cha...

LCSY的博客 11万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Java】==和equals的区别

哈希表允许哈希冲突(即不同的对象具有相同的哈希值),并通过链表或红黑树等机制处理冲突。都用于比较对象,但它们的行为和用途有显著的区别。不同,哈希表可能会将它们存储在不同的位置,导致查找失败或行为异常。不同,哈希表会将它们存储在不同的位置,导致查找失败。时,建议将常量或已知非空的对象放在前面。:比较对象的内容(默认比较引用,可重写)。计算对象的哈希值,确定存储位置(桶)。类中定义的方法,用于比较两个对象的。:比较基本数据类型的值或对象的引用。(即内存地址),而不是对象的内容。比较对象内容,找到匹配的对象。

Eurekame2000的博客 2982

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java中==和equals的区别

==操作符与equals方法的区别

骑个小蜗牛的博客 4万+

java中==和equals的区别_java中的==和equals的区别

关于JAVA中的==和equals函数的区别今天在研读Thinkinginjava时注意到==和equals的区别,于是就通过查看JDK_API才读懂了他们的区别,于是将心得分享一下,望批评指正,谢谢。在JAVA程序中一般的基本类型(值类型int,double,boolean等)都只能通过==来判断值是否相等。如:System.out.println(1==1);System.out....

weixin_34086714的博客 654

Java中 ==和equals的区别?

方法通常会根据对象的内容来判断两个对象是否相等,通常会检查对象的字段值是否相同。比较的是两个对象的内存地址,即它们是否是同一个对象。如果两个对象引用的是同一个内存地址,方法,定义自定义的对象比较逻辑。每个类可以重写(Override)如果你有一个自定义的类(比如。如果这两个字段都相同,方法,以便按内容比较对象。如果它们是不同的对象,的值都为 10,使用。方法来比较对象的内容。对于基本数据类型(如。,因为它们的值相同。

此人很懒,什么都没有写~~ 1739

关于Java中equals和==的介绍

本文深入解析了Java中==和equals()的区别与使用场景。==比较基本类型的值或引用类型的地址,而equals()比较对象逻辑内容。文章通过实际案例揭示了自动装箱缓存、字符串常量池等陷阱,并强调重写equals()必须满足自反性、对称性等规则,且需同时重写hashCode()。特别指出Java 14的record类型自动生成安全的equals方法,建议优先用于数据类。最后总结:==适合引用比较,equals()用于对象内容比较,record是更安全的选择。

weixin_50055999的博客 951

java中== 和 equals 的区别

如果需要比较自定义对象的内容,应重写equals()方法,并确保它符合对称性、传递性和一致性的规则。int value;@Override// 输出:true在这个示例中,MyClass重写了equals()方法,以比较两个对象的value值。==和equals()==:用于比较基本数据类型的值或比较两个对象引用是否指向同一个内存地址。它非常适合用来检查两个对象是否是同一个实例。equals():用于比较两个对象的内容是否相同。equals()

Flying_Fish_roe的博客 1325

java ==和equals的区别_Java中的==和equals区别(转载)

中软国际电子政务部Jeff Chi总结,转载请说明出处。概述:A.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。B.对于String a = “a”; Integer b = 1;这种类型的特有对象创建方式,==的时候值是相同的。C.基本类型没有equals方法,equals只比较值(对象中的内容)是否相同(相同返回true)。D.一...

weixin_35006181的博客 412

equals和==的区别_Java中equals和==的区别

0. 说明从字面上看,即便不是Java coder或者 计算机人,也大概能猜到这两个是判断是否相等的。但是是判断什么相等的,估计也就计算机人才知道吧,这个议题感觉已经是老生常谈了,为了一篇总结完善的文章,我今天早早起床,为的就是预留出时间完成这篇文章。本文主要解决的就是标题中两种“相等”判断的特点和区别。注意一点就是`equals()`是对象的方法,所以基本数据类型不会存在这种判定相等的方式。1....

weixin_42709044的博客 141

java equals 区别_java中equals和==的区别

值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。==比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为t...

weixin_39828457的博客 299

Java中的==和equals详解

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

超级无敌小胖头 2021

Java中的 == 和 equals 区别

Java中的 == 和 equals 到底有什么区别? 提到Java的 == 和 equals,很多人就会说 == 比较的值(地址), equals比较内容,这句话到底对不对? equals是object类的一个方法,定义如下: public boolean equals(Object obj) { return (this == obj); } 我们看到,当调用equals时, 实际还是调用...

weixin_44588771的博客 296
上一篇: 并发编程修炼十三:Timer和TimerTask
下一篇: 数据库的水平切分和垂直切分概念
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值