搜索
首页Javajava教程java equals方法是什么

java equals方法是什么

Mar 10, 2023 am 10:58 AM
java equals

java equals方法是object类中的方法,只能用于判断引用类型;equals方法默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等,其使用语法如“public boolean equals(Object obj) {return (this == obj);}”。

java equals方法是什么

本教程操作环境:Windows10系统、java8、Dell G3电脑。

Java中的equals方法

一、"=="运算符

"=="是一个比较运算符。

  • "=="既可以判断基本类型,又可以判断引用类型。
  • "=="如果判断基本类型,判断的是值是否相等。eg: int i=10; double d=10.0
  • "=="如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象。

二、equals方法

  • equals是object类中的方法,只能用于判断引用类型
  • equals方法默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。比如String和Integer类中的equals源代码。

Object类中的equals方法的源码:

Object类中的equals方法默认就是比较对象地址是否相同。

    public boolean equals(Object obj) {
        return (this == obj);
    }
"hello".equals("abc");

解释:this指的就是当前对象,this是指equals方法是谁调用的,上面的hello调用的equals,所以this指的是字符串hello,而==右边的obj对象,是传入的abc。

三、重写equals方法练习

练习一:

package object;
/*
判断两个person对象的内容是否相等
如果两个person对象的各个属性值都一样,则返回true,反之返回false
 */
public class EqualsExercise {
    public static void main(String[] args) {
        Person person1 = new Person("jack", 10, '男');
        Person person2 = new Person("jack", 10, '男');
        System.out.println(person1.equals(person2));   //输出结果是true
    }
}

class Person {
    private String name;
    private int age;
    private char gender;

    //重写Object的equals方法
    public boolean equals(Object obj) {
        //如果比较的两个对象是同一个对象,则直接返回true
        if (this == obj){   //this就代表调用equals方法的那个对象,obj就是方法里面的实参
            return true;
        }
        //类型判断
        if (obj instanceof Person){  //obj是Person,我们才比较
            //进行 向下转型(即obj转成Person); 因为我需要得到obj的各个属性,如果不转型,拿不到
            Person p = (Person) obj;
            return this.name.equals(p.name) && this.age == p.age && this.gender == p.gender;
        }
        //如果不是person,则直接返回false;总不能拿一个人跟一个狗比
        return false;
    }


    public Person(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;
    }
}

Tips:

instanceof的用法:result = object instanceof class

instanceof左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返false。

练习二:

c15b90a891fd3ea1c7383b7c88f4687.jpg

 解释:

  • sout1:p1和p2都是对象,因此==判断的是地址是否相同,false
  • sout2:p1.name和p2.name都是字符串,因此这里的equals调用的是String类的中的equals方法,判断的是内容是否相同,true
  • sout3:p1和p2都是对象,因此这里的equals是Object类中的equals方法,判断的是地址是否相同,false
  • sout4:s1和s2都是String类的对象,因此这里的equals调用的是String类的中的equals方法,判断的是内容是否相同,true
  • sout5:s1和s2都是对象,因此==判断的是地址是否相同,false

练习三:

13fc63853b32c9dce4679b1ed1cbbc4.jpg

 解释:

  • sout1:65和65.0是相等的,true
  • sout2:字符的本质还是数字,查阅AscII表,A就是12,true
  • sout3:没啥说的
  • sout4:没啥说的
  • sout5:没啥说的
  • sout6:都不是同一种类型,==直接编译错误

相关推荐:《Java视频教程

以上是java equals方法是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
JVM性能与其他语言JVM性能与其他语言May 14, 2025 am 12:16 AM

JVM'SperformanceIsCompetitiveWithOtherRuntimes,operingabalanceOfspeed,安全性和生产性。1)JVMUSESJITCOMPILATIONFORDYNAMICOPTIMIZAIZATIONS.2)c提供NativePernativePerformanceButlanceButlactsjvm'ssafetyFeatures.3)

Java平台独立性:使用示例Java平台独立性:使用示例May 14, 2025 am 12:14 AM

JavaachievesPlatFormIndependencEthroughTheJavavIrtualMachine(JVM),允许CodeTorunonAnyPlatFormWithAjvm.1)codeisscompiledIntobytecode,notmachine-specificodificcode.2)bytecodeisisteredbytheybytheybytheybythejvm,enablingcross-platerssectectectectectross-eenablingcrossectectectectectection.2)

JVM架构:深入研究Java虚拟机JVM架构:深入研究Java虚拟机May 14, 2025 am 12:12 AM

TheJVMisanabstractcomputingmachinecrucialforrunningJavaprogramsduetoitsplatform-independentarchitecture.Itincludes:1)ClassLoaderforloadingclasses,2)RuntimeDataAreafordatastorage,3)ExecutionEnginewithInterpreter,JITCompiler,andGarbageCollectorforbytec

JVM:JVM与操作系统有关吗?JVM:JVM与操作系统有关吗?May 14, 2025 am 12:11 AM

JVMhasacloserelationshipwiththeOSasittranslatesJavabytecodeintomachine-specificinstructions,managesmemory,andhandlesgarbagecollection.ThisrelationshipallowsJavatorunonvariousOSenvironments,butitalsopresentschallengeslikedifferentJVMbehaviorsandOS-spe

Java:写一次,在任何地方跑步(WORA) - 深入了解平台独立性Java:写一次,在任何地方跑步(WORA) - 深入了解平台独立性May 14, 2025 am 12:05 AM

Java实现“一次编写,到处运行”通过编译成字节码并在Java虚拟机(JVM)上运行。1)编写Java代码并编译成字节码。2)字节码在任何安装了JVM的平台上运行。3)使用Java原生接口(JNI)处理平台特定功能。尽管存在挑战,如JVM一致性和平台特定库的使用,但WORA大大提高了开发效率和部署灵活性。

Java平台独立性:与不同的操作系统的兼容性Java平台独立性:与不同的操作系统的兼容性May 13, 2025 am 12:11 AM

JavaachievesPlatFormIndependencethroughTheJavavIrtualMachine(JVM),允许Codetorunondifferentoperatingsystemsswithoutmodification.thejvmcompilesjavacodeintoplatform-interploplatform-interpectentbybyteentbytybyteentbybytecode,whatittheninternterninterpretsandectectececutesoneonthepecificos,atrafficteyos,Afferctinginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging

什么功能使Java仍然强大什么功能使Java仍然强大May 13, 2025 am 12:05 AM

JavaispoperfulduetoitsplatFormitiondence,对象与偏见,RichstandardLibrary,PerformanceCapabilities和StrongsecurityFeatures.1)Platform-dimplighandependectionceallowsenceallowsenceallowsenceallowsencationSapplicationStornanyDevicesupportingJava.2)

顶级Java功能:开发人员的综合指南顶级Java功能:开发人员的综合指南May 13, 2025 am 12:04 AM

Java的顶级功能包括:1)面向对象编程,支持多态性,提升代码的灵活性和可维护性;2)异常处理机制,通过try-catch-finally块提高代码的鲁棒性;3)垃圾回收,简化内存管理;4)泛型,增强类型安全性;5)ambda表达式和函数式编程,使代码更简洁和表达性强;6)丰富的标准库,提供优化过的数据结构和算法。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。