Java中的equals方法

这篇具有很好参考价值的文章主要介绍了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。

练习二:

java equals,JavaSE笔记,java,servlet,jvm

 解释:文章来源地址https://www.toymoban.com/news/detail-779680.html

  • 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

练习三:

java equals,JavaSE笔记,java,servlet,jvm

 解释:

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

到了这里,关于Java中的equals方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • equals方法的用法(java)

    equals 和 == 易错使用案例集合

    2024年02月16日
    浏览(35)
  • Java中怎么使用equals()方法比较

           在 Java 中, equals() 方法用于比较两个对象是否相等。 equals() 方法是 Object 类的方法,可以被所有的类继承和使用。 要使用 equals() 方法,需要按照以下步骤进行操作: 1.确保你要比较的对象不为 null 。否则,如果你尝试调用 equals() 方法,会触发空指针异常。 2.调用要

    2024年01月19日
    浏览(49)
  • 【Java】常见面试题:HTTP/HTTPS、Servlet、Cookie、Linux和JVM

    努力经营当下 直至未来明朗! “抓包工具”:是个特殊的软件,相当于一个“代理程序”,浏览器给服务器的请求就会经过这个代理程序(响应也是经过该代理程序的),进一步的就能分析出请求和响应的结果如何。 fiddler可以抓取http请求,也可以开启抓取https请求。 HTTP

    2024年02月12日
    浏览(38)
  • Java面试题: == 和 equals() 区别,toString方法

    == :运算符 可以使用在基本数据类型变量和引用数据类型变量中 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同) 如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体 补充: == 符

    2024年02月08日
    浏览(47)
  • Effective Java笔记(11)覆盖 equals 时总要覆盖 hashCode

             在每个 覆盖了 equals 方法的类中,都 必须 覆盖 hashCode 方法 。 如果不这样做的话,就会违反 hashCode 的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这类集合包括 HashMap 和 HashSet 。 下面是约定的内容,摘自 Object 规范: 1、在应用程序的执

    2024年02月15日
    浏览(57)
  • 【JavaSE】Java基础语法(十三):Java 中的集合(十分全面)

    List (对付顺序的好帮⼿): 存储的元素是有序的、可重复的。 Set (注重独⼀⽆⼆的性质): 存储的元素是⽆序的、不可重复的。 Queue (实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。 Map (⽤ key 来搜索的专家): 使⽤键值对(key-value)存

    2024年02月10日
    浏览(42)
  • 【JavaSE】Java基础语法(三十七):Java 中的 String 类(源码级别)

    String 表示 字符串类型,属于 引用数据类型 。Java 中 String 是 不可变 的。 在 Java 当中 双引号 括起来的字符串,是直接存储在“方法区”的“字符串常量池”当中的。 源码: 源码: 源码: 源码: 源码: 源码: 源码: 源码: https://blog.csdn.net/qq_44715943/article/details/116308837

    2024年02月06日
    浏览(49)
  • 【JAVA】 javaSE中的数组|数组的概念&使用

    数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。在java中,包含6个整形类型元素的数组,可以看做是酒店中连续的6个房间. 1. 数组中存放的元素其类型相同 2. 数组的空间是连在一起的 3. 每个空间有自己的编号,其实位置的编号为0,即数组的下标 

    2024年02月14日
    浏览(66)
  • 【JavaSE】Java方法的使用

    【本节目标】 1. 掌握方法的定义以及使用 2. 掌握方法传参 3. 掌握方法重载 4. 掌握递归 目录 1.方法概念及使用 1.1什么是方法(method) 1.2 方法定义 1.3 方法调用的执行过程 1.4 实参和形参的关系 2. 方法重载 2.1 为什么需要方法重载 2.2 方法重载概念 3. 递归 3.1 生活中的故事 3.2 递

    2024年02月12日
    浏览(40)
  • Java课题笔记~ Servlet编程

    (1)什么是Servlet Servlet是基于Java语言的Web编程技术,部署在服务器端的Web容器里,获取客户端的访问请求,并根据请求生成响应信息返回给客户端。 创建Servlet的方式,有 如下图:一般创建Servlet都是通过继承HttpServlet来实现,如图中的HelloServlet。 (类图快捷键:Ctrl + Alt + U)

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包