zoukankan      html  css  js  c++  java
  • "=="和equals方法究竟有什么区别?

    ==操作符的功能有两个:

    A.如果==的两边都是基本类型变量、包装类对象所组成的表达式,==用于比较两边的表达式的值是否相等——只要两边的表达式的值相等,即使数据类不同,该运算符也会返回true

    B.如果==的两边是引用类型的变量,==用于判断这两个引用类型的变量是否引用同一块内存,只有当它们引用同一块内存时,==才会返回true

    equals()则是一个java.lang.Object类的一个方法,因此任何Java对象都可调用该方法与其他对象进行比较。java.lang.Object类的equals方法的实现代码如下:

    boolean equals(Object o)

    {

    return this==o;

    }

    从上面代码可以看出,如果一个类没有重写java.lang.Objectequals()方法时,此时equals()方法的比较结果与==的比较结果是相同的。

    Java允许任何类重写equals()方法,重写该方法就是让程序员来自己决定两个对象相等的标准——极端的情况下,我们完全可以设计出Person对象与Dog对象equals()比较返回true的情况——当然一般不会这么设计。

    实际上重写equals()方法时通常会按如下格式:

    public boolean equals(Object obj)

    {

    if (this == obj)

    return true;

    if (obj == null)

    return false;

    if (getClass() != obj.getClass())

    return false;

    Person other = (Person) obj;

    if (name == null)

    {

    if (other.name != null)

    return false;

    }

    else if (!name.equals(other.name))

    return false;

    if (pass == null)

    {

    if (other.pass != null)

    return false;

    }

    else if (!pass.equals(other.pass))

    return false;

    return true;

    }

    上面重写equals()方法用于判断两个Person对象是否“相等”,程序只要两个Person对象的namepass相等,程序就可以把这两个Person对象当成相等——这是系统业务决定的。如果业务需要,我们也可以增加更多的参与判断的Field,当然也可以只根据name进行判断——只要两个Personname相等,就认为两个Person相等,这都是由系统的业务决定。

    总结起来就是一句话:开发者重写equals()方法就可以根据业务要求来决定两个对象是否“相等”。

    Java Program!
  • 相关阅读:
    Express请求处理-静态资源的处理
    PostMan怎样携带登录信息请求后台接口防止出现无法访问资源问题
    Express请求处理-GET和POST请求参数的获取
    Express请求处理-构建模块化路由
    Winform中将WebBrower浏览器控件由IE内核修改为Chrome的WebKit内核
    Electron项目怎样打包成桌面exe应用
    Vue项目打包成桌面程序exe除了使用electron-vue你还可以这样
    Vue项目怎样打包并部署在WindowsServer服务器通过IP访问
    Vue本地执行build之后打开dist目录下index.html正常访问
    H5背景音乐
  • 原文地址:https://www.cnblogs.com/programb/p/14068373.html
Copyright © 2011-2022 走看看