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日
    浏览(10)
  • Java中怎么使用equals()方法比较

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

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

    【Java】常见面试题:HTTP/HTTPS、Servlet、Cookie、Linux和JVM

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

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

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

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

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

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

    【JavaSE】Java基础语法(十三):Java 中的集合(十分全面)

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

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

    【JavaSE】Java基础语法(三十七):Java 中的 String 类(源码级别)

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

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

    【JAVA】 javaSE中的数组|数组的概念&使用

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

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

    【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日
    浏览(14)
  • Java课题笔记~ Servlet编程

    Java课题笔记~ Servlet编程

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

    2024年02月13日
    浏览(12)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包